Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как запретить вывод определенной категории?

Как запретить вывод определенной категории?


     05.03.2019    Запретить категорию    Общие вопросы, Общие вопросы по PHP, MySQL    1654

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

Оригинальный запрос:

Пробовал так:


Буду рад любым подсказкам, спасибо

Ответил: LazyDev


В /engine/engine.php найти
if (isset ( $_SESSION['dle_direction_cat_'.$category_id] )) $news_direction_by = $_SESSION['dle_direction_cat_'.$category_id];
Ниже вставить:
$where_category .= "category NOT REGEXP '([[:punct:]]|^)(523)([[:punct:]]|$)' AND ";

11 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 5 марта 2019 19:28 -

может быть

AND cat_id <> 523


или

AND FIND_IN_SET(cat_id,'523') = 0

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

ushkom
Юзер

ushkom - 5 марта 2019 22:50 -

К сожалению не работает ни один из вариантов, в DLE 13.1 было проще
http://prntscr.com/mtpptr

dj-avtosh
PHP-developer

dj-avtosh - 5 марта 2019 19:32 -

Но судя по всему нужно в другом месте запроса делать проверку. Можете распечатать запрос полностью?

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

ushkom
Юзер

ushkom - 5 марта 2019 22:42 -

Да кажется здесь.

Вот код:


dj-avtosh
PHP-developer

dj-avtosh - 5 марта 2019 23:12 -

найти


foreach($cat_info as $value) {
						if( !$value['allow_rss'] ) $not_allow_cats[] = $value['id'];
					}


добавить ниже:


 $not_allow_cats[] = 523;

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

ushkom
Юзер

ushkom - 5 марта 2019 23:19 -

Не работает, запрос не изменился, трейлеры выводятся (категория 523) http://prntscr.com/mtq3vl

dj-avtosh
PHP-developer

dj-avtosh - 5 марта 2019 23:28 -

С телефона сидел, плохо код читается.


$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p {$cat_join}LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1 AND allow_main=1" . $where_date . " ORDER BY " . $fixed . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];


заменить на



$not_allow_cats = [523];
$not_allow_cats = "category NOT IN ('" . implode ( "','", $not_allow_cats ) . "') AND ";
					
$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p {$cat_join}LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$not_allow_cats}{$stop_list}approve=1 AND allow_main=1" . $where_date . " ORDER BY " . $fixed . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

ushkom
Юзер

ushkom - 5 марта 2019 23:48 -

Это на главной, а в категориях как запретить? Сам код:


dj-avtosh
PHP-developer

dj-avtosh - 5 марта 2019 23:49 -

подобным образом. на Ваш вопрос я ответил? Задавайте новый!

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

ushkom
Юзер

ushkom - 6 марта 2019 00:16 -

К сожалению и на главной не работает, я читал что NOT IN не будет работать если возвращается NULL,
работает так, но запрос тяжелее
					// ################ Запрет категорий на главной ################# 
                    $categorys = "3,4,407,408,523";// <-- ID Category через запятую: 1,2,3
                    if ($config['allow_multi_category']) {
                    $stop_list .= " category NOT regexp '[[:<:]](" . str_replace ( ",", "|", $categorys ) . ")[[:>:]]' AND ";
                    } else {
                    $stop_list .= " category NOT IN (" . $categorys . ") AND ";
                    }	

dj-avtosh
PHP-developer

dj-avtosh - 6 марта 2019 01:03 -

естественно не будет работать при мультикатегориях, а ваш код на mysql 8.0

Но будет работать такое:


$stop_list .= " FIND_IN_SET('523', category) = 0 AND ";


По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

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

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

наверх