Хак на расширение функционала тега {custom}

{custom}

В теге {custom} сильно не достает возможности выводить новости из просматриваемой категории. В данный момент для осуществления такого необходимо назначать для всех категорий свой тег:

[category=1]{ custom category="1"}[/category]  [category=2]{ custom category="2"}[/category]  ...

Принято решение, данное сделать слегка проще.

С помощью одного тега все новости будут выводиться с указанным category="current" или category="current_sub"

[aviable=cat|showfull]{ custom category="current"}[/aviable] 

и

[aviable=cat]{ custom category="current_sub"}[/aviable]

current - берет ID одной категории, именно той, в которой находится пользователь.
current_sub - делает список категорий с учетом подкатегорий просматриваемой категории.
aviable - нужен, так как во всех остальных случаях переменная $category_id будет пустая и у нас получится MySQL ошибка.
Установка:
1. Открыть файл engine/modules/functions.php:
В Dle 9.7 и 9.8 найти строку:

$custom_category = $db->safesql( trim(str_replace( ',', '|', $match[1] )) ); 

Перед ней вставить:

if($match[1]=='current') $custom_category = $category_id;  elseif($match[1]=='current_sub') $custom_category = get_sub_cats($category_id);  else 

В Dle 10.0 и старше найти строку:

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

Далее вставить:

if($match[1]=='current') $custom_category = $category_id;  elseif($match[1]=='current_sub') $custom_category = get_sub_cats($category_id);  else{ 

2. Далее найти строку:

$custom_category = $db->safesql( trim(str_replace( ',', '|', $temp_array )) ); 

И после нее вставить закрывающую скобку:

Версия движка: 9.7 - 10.х

Пожаловаться Подписаться
0 ответов
авторизуйтесь чтобы ответить