alexpsp 30 Опубликовано: 26 июля 2018 Рассказать Опубликовано: 26 июля 2018 Сайт for24.ru. Сейчас вывод новостей категории через кастом: если новость принадлежит хотя бы 1 категории из списка. А как сделать так, чтобы была проверка? Выводить именно те новости, которые принадлежат именно всем категориям из перечисления, а не только одной из них. Спасибо! Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 310 Опубликовано: 26 июля 2018 Рассказать Опубликовано: 26 июля 2018 1 час назад, alexpsp сказал: Сайт for24.ru. Сейчас вывод новостей категории через кастом: если новость принадлежит хотя бы 1 категории из списка. А как сделать так, чтобы была проверка? Выводить именно те новости, которые принадлежат именно всем категориям из перечисления, а не только одной из них. Спасибо! Открыть /engine/modules/functions.php найти function custom_print( $matches=array() ) { В нем найти if( preg_match( "#category=['\"](.+?)['\"]#i", $param_str, $match ) ) { Выше вставить if (preg_match( "#and-category=['\"](.+?)['\"]#i", $param_str, $match)) { $cats_select = true; $temp_array = []; $match[1] = explode(',', $match[1]); foreach ($match[1] as $value) { if (count(explode('-', $value)) == 2) { $temp_array[] = get_mass_cats($value); } else { $temp_array[] = intval($value); } } $temp_array = implode('|', $temp_array); $temp_array = explode('|', $temp_array); $cat_and = []; if ($temp_array) { foreach ($temp_array as $value) { $cat_and[] = "category regexp '[[:<:]](" . $value . ")[[:>:]]'"; } } $where[] = '( ' . implode(' AND ', $cat_and) . ' )'; } Вместо параметра category использовать and-category. Предупреждаю, при использовании множества категории может повыситься нагрузка на базу данных из-за REGEXP, так устроены категории DLE. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.