Не нравятся результаты поиска? Попробуйте другой поиск!

Запретить вывод определенной категории в "похожих новостях"


     08.01.2013    Общие вопросы по PHP, Хаки    3935

вопрос
Подскажите, как в похожих новостях и в поиске запретить вывод определенной категории? Ситуация следующая, на сайте имеет каталог фильмов и ведется параллельно категория с новостями, мне нужно что бы в поиске и в related news не выводились материалы с категории новостей.

Ответил: BR0kEN


Открыть show.full.php, найти:
$db->query( "SELECT id, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE {$allowed_cats}MATCH (title, short_story, full_story, xfields) AGAINST ('$body') AND id != " . $row['id'] . " AND approve=1" . $where_date . " LIMIT " . $config['related_number'] );
и заменить на:
                    if ( $config['not_add_to_related'] !== '' ) $not_add_to_related = "AND category NOT IN (" . $config['not_add_to_related'] . ") ";
                    else $not_add_to_related = "";

                    $db->query( "SELECT id, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE {$allowed_cats}MATCH (title, short_story, full_story, xfields) AGAINST ('$body') AND id != " . $row['id'] . " {$not_add_to_related}AND approve=1" . $where_date . " LIMIT " . $config['related_number'] );
Открыть /engine/inc/options.php, найти:
        showRow( $lang['opt_sys_reason'], $lang['opt_sys_reasond'], "<textarea class=\"edit bk\" style=\"width:350px;height:100px;\" name=\"save_con[offline_reason]\">{$config['offline_reason']}</textarea>" );
ниже добавить:
        showRow( $lang['not_add_to_related'], $lang['not_add_to_related_d'], "<input class=\"edit bk\" type=text style=\"text-align: center;\" name=\"save_con[not_add_to_related]\" value=\"{$config['not_add_to_related']}\" size=\"40\" />" );
Открыть /language/Russian/adminpanel.lng, найти:
'wysiwyg_language'        =>  "ru",
и ниже добавить:
'not_add_to_related'    =>    "Не выводить в {related-news}",
'not_add_to_related_d'    =>    "Введите, через запятую и без пробелов, ID категорий которые не должны отображаться в похожих новостях",
Затем заходите в админку, открываете настройки и пишете через запятую ID категорий, которые не должны выводиться в похожих публикациях (в таком формате: 29,30,31,32,33). Также не забудьте перестроить кэш похожих новостей.

з.ы. Если в админке поле не нужно, то в show.full.php нужно найти:
$db->query( "SELECT id, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE {$allowed_cats}MATCH (title, short_story, full_story, xfields) AGAINST ('$body') AND id != " . $row['id'] . " AND approve=1" . $where_date . " LIMIT " . $config['related_number'] );
и заменить на:
$db->query( "SELECT id, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE {$allowed_cats}MATCH (title, short_story, full_story, xfields) AGAINST ('$body') AND id != " . $row['id'] . " AND category NOT IN (29,30,31,32,33) AND approve=1" . $where_date . " LIMIT " . $config['related_number'] );
В этом варианте придется каждый раз править файл show.full.php чтобы дописать нужный id категории.
Отредактировал 10-01-2013, 08:22 - BR0kEN
Причина: второй раз поправил ответ - парсер съедает код!

Комментарии пользователей (18)

shadow6630
6

131 | 55

shadow6630 - 8 января 2013 22:26 - Юзер

Используйте БлокПро, там есть функция исключения категорий, вот ссыль тык

dj-avtosh
39

1479 | 390

dj-avtosh - 9 января 2013 01:58 - шашлычник

А можно и хак написать за долларов 20)))

skype: elhan.isaev

Sander
1125

1637 | 1204

Sander - 9 января 2013 02:09 - Эксперт

Это за пару слов в запросе - 20$ ?
WHERE category not in (1,2,3)

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

maggotische
4

55 | 63

maggotische - 9 января 2013 14:24 - Юзер

а можно подробнее пожалуйста? В какой запрос нужно добавить? Потому что вариант описаный в ответе к сожалению не подходит, каждый день добавляется порядка 5 новостей в категорию, нереально каждый раз провить список постов, нужен вариант именно с закрытием определенной категории

dj-avtosh
39

1479 | 390

dj-avtosh - 10 января 2013 08:08 - шашлычник

Это в плане что бы в админке сделать возможность настраивать индивидуально.

skype: elhan.isaev

BR0kEN
163

235 | 275

BR0kEN - 9 января 2013 14:49 - Эксперт

Ответ изменил, был жутко сонный и написал для публикаций вместо категорий.

maggotische
4

55 | 63

maggotische - 9 января 2013 18:25 - Юзер

спасибо большое, а как подобным образом можно исключить категории из поиска?

maggotische
4

55 | 63

maggotische - 9 января 2013 18:33 - Юзер

прошу прощения, так и не нашел где вводить то ID категорий?)

maggotische
4

55 | 63

maggotische - 9 января 2013 18:35 - Юзер

уже нашел, только нет поля для ввода данных (см. Скрин)
http://storage6.static.itmages.com/i/13/0109/h_1357742077_6994736_ae5c0053b5.png

maggotische
4

55 | 63

maggotische - 9 января 2013 19:17 - Юзер

так же с этим хаком после добалвения новой новости если попробовать ее открыть на сайте получаем ошибку (см. Скрин)
http://storage5.static.itmages.com/i/13/0109/h_1357744632_5601100_5fb29a961c.png

iwanowi4
88 | 71

iwanowi4 - 9 января 2013 20:01 - Юзер

Открыть /engine/inc/options.php, найти:
    showRow( $lang['opt_sys_reason'], $lang['opt_sys_reasond'], "<textarea class=\"edit bk\" style=\"width:350px;height:100px;\" name=\"save_con[offline_reason]\">{$config['offline_reason']}</textarea>" );

ниже добавить:
    showRow( $lang['not_add_to_related'], $lang['not_add_to_related_d'], "<input class=\"edit bk\" type=text style=\"text-align: center;\" name=\"save_con[not_add_to_related]\" value=\"{$config['not_add_to_related']}\" size=\"40\" />" );

BR0kEN
163

235 | 275

BR0kEN - 9 января 2013 19:40 - Эксперт

Что-то не так делаете. Проверил на новостях и на категориях, все работает.

BR0kEN
163

235 | 275

BR0kEN - 10 января 2013 08:22 - Эксперт

Только заметил что парсер съел кусок кода. Поправил.

maggotische
4

55 | 63

maggotische - 10 января 2013 12:52 - Юзер

спасибо, теперь работает. Однако есть 1 баг (может только у меня) если в список запрещенных категорий ввести только одну категорию то хак не работает, как только ввел 2 категории - все заработало.

dimon212909
5 | 1

dimon212909 - 19 марта 2013 17:04 - Юзер

Если в админке поле не нужно, то в show.full.php нужно найти:

    $db->query( "SELECT id, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE {$allowed_cats}MATCH (title, short_story, full_story, xfields) AGAINST ('$body') AND id != " . $row['id'] . " AND approve=1" . $where_date . " LIMIT " . $config['related_number'] );


и заменить на:

    $db->query( "SELECT id, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE {$allowed_cats}MATCH (title, short_story, full_story, xfields) AGAINST ('$body') AND id != " . $row['id'] . " AND category NOT IN (29,30,31,32,33) AND approve=1" . $where_date . " LIMIT " . $config['related_number'] );



Спасибо огромное дружище, не удержался чтоб не поблагодарить! Перерыл весь инет, но кроме "БлокПро" не каких дельных советов, а зачем он мне если единственная надобность - исключить 1 - 2 категории из relatednews. В общем еще раз СПС!!!

itsmyname
1

itsmyname - 23 ноября 2013 02:01 - Юзер

Специально зарегался, чтобы сказать большое спасибо! Всё работает отлично, как и нужно.

4sezona
1

24

4sezona - 24 ноября 2014 05:37 - Юзер

Всем привет!
Возникла такая проблема: при выводе похожих новостей выводятся также новости, находящиеся на модерации.
Долго рыл интернет и наткнулся на данное решение.
Но вот почему то оно у меня не работает.
Может для версии 10.3 уже не годится такое решение проблемы?

4sezona
1

24

4sezona - 24 ноября 2014 05:56 - Юзер

Проблема решена:

Выполнить запрос в MySQL:

UPDATE `dle_post_extras` SET `related_ids` = ""

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы