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

Как сделать вывод только с 1 категории через custom?


     20.01.2020    custom, dle    Общие вопросы, Шаблоны (TPL)    598

вопрос
DLE 13.3
При выводе {custom id=1} выведет все новости где есть категория 1, даже если кроме нее есть ещё другие категории.
Как можно при этом заблокировать вывод другой категории, если она есть в новости. Пробывал через categoryexclude, на в связке с category="1",categoryexclude="2" оно не рабоатет. Как ещё можно запретить вывод из определенной категории?

Ответа пока нет


1 комментарий

dj-avtosh
PHP-developer

dj-avtosh - 23 января 2020 17:08 -

Здравствуйте, стандартных средств для этого я не знаю, предлагаю сделать так:

В /engine/modules/functions.php найти (два раза):

if( preg_match( "#categoryexclude=['"](.+?)['"]#i", $param_str, $match ) ) {


ВЫШЕ добавить:

	if( preg_match( "#only_category=['"](.+?)['"]#i", $param_str, $match ) ) {
		$cats_select = true;

		$temp_array = 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);

		}

		if( $config['allow_multi_category'] ) {
			
			$cat_join = "INNER JOIN (SELECT DISTINCT(" . PREFIX . "_post_extras_cats.news_id) FROM " . PREFIX . "_post_extras_cats WHERE cat_id = '" . $temp_array[0] . "') c ON (p.id=c.news_id) ";
		
		} else {

			$where[] = "p.category = '" . $temp_array[0] . "'";
		
		}
	}



И заюзать в custom как {custom only_category=1}

Не тестировал.

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

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

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

наверх