• SanDev.pro
  •  › 
  • Datalife Engine
  •  › 
  • Хак: Автоматический вывод списка ID подкатегорий
Хак: Автоматический вывод списка ID подкатегорий для DLE

Хак: Автоматический вывод списка ID подкатегорий

Простенький хак предназначенный для вывода списка подкатегорий в виде списка ID через запятую.
Область применения: тег {custom category="...", тег [category=...], [catlist=...] и т.п.
Данный хак будет полезен тем, кто часто добавляет новые подкатегории или просто вы ленивая жопа устали каждый раз перебирать файлы шаблона в поисках всех custom-ов и [category для добавления нового ID.

С помощью этого хака достаточно будет прописать:
[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
Комментарии: (2)
  1. foto
    Посетитель 23 мая 2018 18:54 #
    Здравствуйте уважаемый, простите что не в тему но где вы такую капчу взяли!? Хочу такую.
    0
    1. foto
      Администратор 24 мая 2018 09:42 #
      Данная капча была сделана по индивидуальному заказу в рамках проекта "Себе любимому".
      Продавать/публиковать/распространять не планирую в принципе.
      0
Добавить комментарий
  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2018.
При копировании, ссылка на источник обязательна.