Хак: Автоматический вывод списка ID подкатегорий
Простенький хак предназначенный для вывода списка подкатегорий в виде списка ID через запятую.
Область применения: тег {custom category="...", тег [category=...], [catlist=...] и т.п.
Данный хак будет полезен тем, кто часто добавляет новые подкатегории или просто выленивая жопа устали каждый раз перебирать файлы шаблона в поисках всех custom-ов и [category для добавления нового ID.
С помощью этого хака достаточно будет прописать:
В момент загрузки файла шаблона хак выполнит обработку тега, в итоге обработчик получит привычный вид:
Так же можно комбинировать теги:
Установка:
Для DLE 13.0 достаточно установить плагин:
Для предыдущих версий:
Открыть файл engine/classes/templates.class.php
Найти строку:
ПЕРЕД ней вставить:
Найти строку:
После нее вставить:
Найти строку:
После нее вставить:
На этом все.
С уважением,
Олег Александрович a.k.a. Sander
Область применения: тег {custom category="...", тег [category=...], [catlist=...] и т.п.
Данный хак будет полезен тем, кто часто добавляет новые подкатегории или просто вы
С помощью этого хака достаточно будет прописать:
[category={subcat=3}]
{custom category="{subcat=7}"}
В момент загрузки файла шаблона хак выполнит обработку тега, в итоге обработчик получит привычный вид:
[category=3,21,22,25,29,33,34,35,39]
{custom category="7,59,60,61,66,67,68,69,80"}
Так же можно комбинировать теги:
[category={subcat=3},100,105-110]
[category={subcat=3},{subcat=7},551]
Установка:
Для DLE 13.0 достаточно установить плагин:
Для предыдущих версий:
Открыть файл engine/classes/templates.class.php
Найти строку:
function load_template($tpl_name) {
ПЕРЕД ней вставить:
//////////////////////////////////////////////////////////////
private function getSubCatList($match)
{
global $cat_info;
$id = is_array($match) ? $match[1] : $match;
if (!$cat_info[$id]) {
return $id;
}
$list = [$id];
foreach ($cat_info as $v) {
if ($v['parentid'] == $id) {
$list[] = $this->getSubCatList($v['id']);
}
}
return join(',', $list);
}
//////////////////////////////////////////////////////////////
Найти строку:
$this->template = file_get_contents( $this->dir . "/" . $tpl_name );
После нее вставить:
//////////////////////////////////////////////////////////////////////////////////////////////
$this->template = preg_replace_callback("#\{subcat=(\d+)\}#i", [&$this, 'getSubCatList'], $this->template);
//////////////////////////////////////////////////////////////////////////////////////////////
Найти строку:
$template = file_get_contents( $templatefile );
После нее вставить:
//////////////////////////////////////////////////////////////////////////////////////////////
$template = preg_replace_callback("#\{subcat=(\d+)\}#i", [&$this, 'getSubCatList'], $template);
//////////////////////////////////////////////////////////////////////////////////////////////
На этом все.
С уважением,
Олег Александрович a.k.a. Sander