Вывод новостей одновременно принадлежащим нескольким категориям

Вывод новостей одновременно принадлежащим нескольким категориям

По умолчанию тег {custom category="1,2,3"} выводит новости, которые принадлежат одной из категорий. Этот хак поможет вывести новости которые принадлежат сразу нескольким категориям.


Установка:
1. Открыть engine/modules/functions.php и найти 2е вхождение /~1202 строка/:
	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) . ' )';
}

Готово!

Теперь в место {custom}, для вывода новостей которые принадлежат сразу нескольким категориям, следует использовать тег {and-category}.

Важно: при использовании множества категории может повыситься нагрузка на базу данных.
 
Версия DLE: 13.0
Автор: PunPun
Источник
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.