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

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


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

вопрос
Всем доброго времени суток. Пытаюсь в новой версии 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

Сложные заказы в 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

Сложные заказы в 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

Сложные заказы в 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

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

ushkom
Юзер

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

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


dj-avtosh
PHP-developer

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

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

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

Сложные заказы в 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

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

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

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

наверх