Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Хаки Как скрыть категорию из общей RSS

Как скрыть категорию из общей RSS


     29.08.2011    Хаки    3646

вопрос
Мне очень нужно исключить попадание новостей из определённой категории в общую ленту новостей RSS. Но я не знаю как это сделать. Помогите пожалуйста recourse

Ответил: ПафНутиЙ


Открываем файл engine/rss.php
ищем:
$db->query( "SELECT * FROM " . PREFIX . "_category ORDER BY posi ASC" );

меняем на:
$db->query( "SELECT * FROM " . PREFIX . "_category ORDER BY NOT IN (1,2,3) posi ASC" );

где 1,2,3 - категории

UPD by Sander
По-моему меняем на:
$db->query( "SELECT * FROM " . PREFIX . "_category WHERE category NOT IN (1,2,3) ORDER BY posi ASC" );

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

NANO
2

39 | 29

NANO - 9 ноября 2012 05:28 - Юзер

Не работает на DLE 9.7

matro-skin
24

matro-skin - 4 июля 2013 14:19 - Юзер

Пробовал 2 варианта, не исключает категории. dle 9.8

matro-skin
24

matro-skin - 4 июля 2013 14:23 - Юзер

matro-skin,Кеш чистил

alekun
40 | 3

alekun - 28 сентября 2013 18:09 - Юзер

Актуально ли это для dle 10.0? Есть ли рабочий вариант? Очень нужно!

dj-avtosh
39

1479 | 390

dj-avtosh - 28 сентября 2013 18:15 - шашлычник

Должно работать. Не подскажете как там выглядит сейчас запрос в дле 10?

skype: elhan.isaev

alekun
40 | 3

alekun - 28 сентября 2013 18:19 - Юзер

По умолчанию такой же как в примере.

dj-avtosh
39

1479 | 390

dj-avtosh - 28 сентября 2013 18:21 - шашлычник

Значит должно работать.

skype: elhan.isaev

alekun
40 | 3

alekun - 28 сентября 2013 18:23 - Юзер

Попробовал указанные пафнутием способы. Результат в DLE 10.0

для строки $db->query( "SELECT * FROM " . PREFIX . "_category WHERE category NOT IN (1,2,3) ORDER BY posi ASC" ); от Сандера
Итог:
MySQL error in file: /home/site/www/engine/rss.php at line 76
Error Number: 1054
The Error returned was:
Unknown column 'category' in 'where clause'
SQL query:

SELECT * FROM dle_category WHERE category NOT IN (3) ORDER BY posi ASC

//как я понял, в ошибке говорится, что нет такой таблицы, верно? Если префикc не менялся, то нужно заменить category на dle_category? Направьте в верном направлении плиз.

Строка Пафнутия $db->query( "SELECT * FROM " . PREFIX . "_category ORDER BY NOT IN (1,2,3) posi ASC" );
Остается без изменения. выводится без исключения.

alekun
40 | 3

alekun - 28 сентября 2013 18:54 - Юзер

Если прописать $db->query( "SELECT * FROM " . PREFIX . "_category WHERE ID NOT IN (1,2,3) ORDER BY posi ASC" );

то посты остаются на месте, пропадает только название категории из ссылки.

dj-avtosh
39

1479 | 390

dj-avtosh - 28 сентября 2013 19:38 - шашлычник

Покажите запрос с таблицей post, если есть

skype: elhan.isaev

alekun
40 | 3

alekun - 10 октября 2013 12:49 - Юзер

Не очень понял о чем вы. Таблица пост там не запрашивается, только ***_category

alekun
40 | 3

alekun - 8 ноября 2013 23:22 - Юзер

Вопрос решен, если кому интересно пишите в личку. Продам хак.
Умеет: исключать категории и отдельные посты из RSS

bonnas
1

bonnas - 10 июня 2014 02:02 - Юзер

Отдаю даром так как на серчинжайне нашел! Работает на 10.1

Открываете файл /engine/modules/show.short.php, находите строку
Цитата:
while ( $row = $db->get_row( $sql_result ) ) {
и сразу после неё вставляете
Цитата:
$cat_id = 1; // ID категории, которую необходимо исключить
if (isset($view_template) && $view_template == "rss" && preg_match("#[^0-9]*".$cat_id."[^0-9]*#", $row['category'])) continue;

Killerkiss
1

15 | 1

Killerkiss - 17 октября 2014 16:40 - Юзер

Тоже мучался в поисках решения. На 10.2. рабочий вариант

Открываете файл /engine/modules/show.short.php, находите строку
while ( $row = $db->get_row( $sql_result ) ) {

и сразу после неё вставляете

$cat_id = '5'; // ID категории, которую необходимо исключить
        if (isset($view_template) && $view_template == "rss" && $row['category'] == $cat_id) continue;

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

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