Sander1 62 Опубликовано: 18 мая 2018 Рассказать Опубликовано: 18 мая 2018 Данный хак будет полезен тем, кто часто добавляет новые подкатегории или просто вы ленивая жопа устали каждый раз перебирать файлы шаблона в поисках всех custom-ов и [category для добавления нового ID. С помощью этого хака достаточно будет прописать: [category={subcat=3}] {custom category="{subcat=7}"} [catlist={subcat=2}] В момент загрузки файла шаблона хак выполнит обработку тега, в итоге обработчик получит привычный вид: [category=3,21,22,25,29,33,34,35,39] {custom category="7,59,60,61,66,67,68,69,80"} [catlist=2,8,9,10] Так же можно комбинировать теги: [category={subcat=3},100,105-110] [category={subcat=3},{subcat=7},551] Установка: Для DLE 13.0 достаточно установить плагин: <?xml version="1.0" encoding="utf-8"?> <dleplugin> <name>Обработка тега {subcat=x}</name> <description>Автоматический вывод списка ID подкатегорий заданной "x" категории</description> <icon></icon> <version></version> <dleversion></dleversion> <versioncompare>less</versioncompare> <mysqlinstall><![CDATA[]]></mysqlinstall> <mysqlupgrade><![CDATA[]]></mysqlupgrade> <mysqlenable><![CDATA[]]></mysqlenable> <mysqldisable><![CDATA[]]></mysqldisable> <mysqldelete><![CDATA[]]></mysqldelete> <file name="engine/classes/templates.class.php"> <operation action="before"> <searchcode><![CDATA[function load_template($tpl_name) {]]></searchcode> <replacecode><![CDATA[////////////////////////////////////////////////////////////// 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); } //////////////////////////////////////////////////////////////]]></replacecode> </operation> <operation action="after"> <searchcode><![CDATA[$this->template = file_get_contents( $this->dir . "/" . $tpl_name );]]></searchcode> <replacecode><![CDATA[////////////////////////////////////////////////////////////////////////////////////////////// $this->template = preg_replace_callback("#\{subcat=(\d+)\}#i", [&$this, 'getSubCatList'], $this->template); //////////////////////////////////////////////////////////////////////////////////////////////]]></replacecode> </operation> <operation action="after"> <searchcode><![CDATA[$template = file_get_contents( $templatefile );]]></searchcode> <replacecode><![CDATA[////////////////////////////////////////////////////////////////////////////////////////////// $template = preg_replace_callback("#\{subcat=(\d+)\}#i", [&$this, 'getSubCatList'], $template); //////////////////////////////////////////////////////////////////////////////////////////////]]></replacecode> </operation> </file> </dleplugin> Для предыдущих версий инструкция у меня на сайте, если кому будет интересно конечно. С уважением, Олег Александрович a.k.a. Sander 1 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.