Перейти к публикации

Вывод новостей через кастом с проверкой по категориям


Рекомендованные сообщения

Сайт for24.ru.

 

Сейчас вывод новостей категории через кастом: если новость принадлежит хотя бы 1 категории из списка.

 

А как сделать так, чтобы была проверка? Выводить именно те новости, которые принадлежат именно всем категориям из перечисления, а не только одной из них.

 

Спасибо!

Ссылка на сообщение
Поделиться на других сайтах
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.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...