• 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
Комментарии: (11)
  1. foto
    Посетитель 23 мая 2018 18:54 #
    Здравствуйте уважаемый, простите что не в тему но где вы такую капчу взяли!? Хочу такую.
    0
    1. foto
      Администратор 24 мая 2018 09:42 #
      Данная капча была сделана по индивидуальному заказу в рамках проекта "Себе любимому".
      Продавать/публиковать/распространять не планирую в принципе.
      0
  2. foto
    Клиент 11 января 2019 18:37 #
    Подскажите пожалуйста, как выводить только подкатегории, категории?
    0
    1. foto
      Администратор 12 января 2019 00:50 #
      Заменить строку
      				$list[] = $this->getSubCatList($v['id']);

      На
      				$list[] = $v['id'];


      Если нужно выводить только строго подкатегории без ID самой категории, то строку:
      $list = [$id];

      Заменить на
      $list = [];
      0
      1. foto
        Клиент 12 января 2019 00:58 #
        спасибо огромное
        0
  3. foto
    Гость 27 сентября 2019 18:10 #
    Здравствуйте, можно заставить работать такую конструкцию?
    {custom category="{subcat={category-id}}"}
    0
    1. foto
      Администратор 27 сентября 2019 19:33 #
      Сомневаюсь. Но попробуйте, это же вам ничего не стоит и не займет много времени.
      0
      1. foto
        Гость 27 сентября 2019 19:39 #
        К сожалению не работает.(
        0
  4. foto
    Посетитель 14 октября 2022 15:17 #
    Здравствуйте! С выходом обновления 15.3 данный плагин к сожалению не работает
    0
    1. foto
      Администратор 20 октября 2022 11:17 #
      Обновил код плагина.
      0
  5. foto
    VIP 9 февраля 2023 23:08 #
    Здравствуйте, а возможно вывести только последнею ID категории новости?


    7 новости
    7.1 россия
    7.1.1 экономика
    7.1.2 работа


    пример: новость о работе в россии. будет выделено несколько категорий (7, 7.1, 7.1.2) и в {custom category=""} нужно подставит одну последнею ID подкатегории...
    0
Добавить комментарий

Внимание! Все сообщения касающиеся техподдержки будут удалены или проигнорированы

Attention! All messages asking for technical support will be removed or ignored

  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2024.
При копировании, ссылка на источник обязательна.