Lexxs 16 Опубликовано: 29 января 2023 Рассказать Опубликовано: 29 января 2023 Доброго времени! В DLE хорошо реализована возможность добавления и создания плагинов, всё продумано, работает отлично, однако есть одно пожелание. Дело в том, что некоторые модули используют в шаблонах ссылки на страницы своего модуля, в теге include, и если отключать модуль на время, или по какой другой причине, то в шаблоне выводится ошибка, типа File engine/mods/modul.php not found. Пожелание же такое: Реализовать в DLE возможность работы глобального тега, который допускает вывод текста заключённого в этот тег, при включенном модуле, или отключать вывод текста, при выключенном модуле. Что то типа этого [xfgiven_modul]{include file='engine/mods/modul-page.php}[/xfgiven_modul], где modul - название, или id модуля, или иной, задаваемый идентефикатор. Думаю было бы не плохо иметь такую возможность. Просто иногда бывает необходимость отключить на какое то время модуль, и приходится лезть ещё и шаблон, чтобы заккоментировать вывод, а потом в обратном порядке, при включении модуля. Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 30 января 2023 Рассказать Опубликовано: 30 января 2023 А можно просто зайти в шаблон и обернуть в {* {include ...} *} и не нужны никакие дополнительные теги. Цитата Ссылка на сообщение Поделиться на других сайтах
aleksandrhristich 107 Опубликовано: 31 января 2023 Рассказать Опубликовано: 31 января 2023 29.01.2023 в 10:53, Lexxs сказал: ...Просто иногда бывает необходимость отключить на какое то время модуль, и приходится лезть ещё и шаблон, чтобы заккоментировать вывод, а потом в обратном порядке, при включении модуля. 5 часов назад, Gameer сказал: А можно просто зайти в шаблон и обернуть в {* {include ...} *} и не нужны никакие дополнительные теги. А мне одному кажется что можно в модуле сделать условие для его вывода: если он включен,то выводится то что надо а если выключен то ничего не выводится? 1 Цитата Ссылка на сообщение Поделиться на других сайтах
dds 49 Опубликовано: 31 января 2023 Рассказать Опубликовано: 31 января 2023 6 часов назад, aleksandrhristich сказал: А мне одному кажется что можно в модуле сделать условие для его вывода: если он включен, то выводится то что надо а если выключен то ничего не выводится? Мне тоже кажется так проще. В engine/inc/options.php чуток подшаманить и в сам модуль добавить условие проверки. И будет полноценный чекбокс (вкл/выкл) данного модуля. Цитата Ссылка на сообщение Поделиться на других сайтах
Lexxs 16 Опубликовано: 31 января 2023 Рассказать Опубликовано: 31 января 2023 Автор 11 часов назад, Gameer сказал: А можно просто зайти в шаблон и обернуть в {* {include ...} *} и не нужны никакие дополнительные теги. И таки нужно опять править в шаблоне каждый раз. 6 часов назад, aleksandrhristich сказал: А мне одному кажется что можно в модуле сделать условие для его вывода: если он включен,то выводится то что надо а если выключен то ничего не выводится? Если знаете, как это сделать, поделитесь ) 2 минуты назад, dds сказал: Мне тоже кажется так проще. В engine/inc/options.php чуток подшаманить и в сам модуль добавить условие проверки. И будет полноценный чекбокс (вкл/выкл) данного модуля. Или уже из коробки в дле сделать, чтоб не приходилось лишний раз шаманить ) Цитата Ссылка на сообщение Поделиться на других сайтах
dds 49 Опубликовано: 31 января 2023 Рассказать Опубликовано: 31 января 2023 Хотя нет, что то я не то написал. Признаю. Плагин же можно и самих плагинах выключить. Цитата Ссылка на сообщение Поделиться на других сайтах
TeraMoune 56 Опубликовано: 31 января 2023 Рассказать Опубликовано: 31 января 2023 Вот вам временное решение пока таких тегов не появилось. Скрытый текст <?xml version="1.0" encoding="utf-8"?> <dleplugin> <name>Tagsblock active plugins</name> <description>Добавляет теги [active-plugins=X] и [not-active-plugins=X] которые управляют отображением содержимого в шаблонах в зависимости от состояния плагина.</description> <icon></icon> <version></version> <dleversion>13.2</dleversion> <versioncompare>greater</versioncompare> <upgradeurl></upgradeurl> <filedelete>0</filedelete> <needplugin></needplugin> <mnotice>1</mnotice> <mysqlinstall><![CDATA[]]></mysqlinstall> <mysqlupgrade><![CDATA[]]></mysqlupgrade> <mysqlenable><![CDATA[]]></mysqlenable> <mysqldisable><![CDATA[]]></mysqldisable> <mysqldelete><![CDATA[]]></mysqldelete> <phpinstall><![CDATA[]]></phpinstall> <phpupgrade><![CDATA[]]></phpupgrade> <phpenable><![CDATA[]]></phpenable> <phpdisable><![CDATA[]]></phpdisable> <phpdelete><![CDATA[]]></phpdelete> <notice><![CDATA[<p>@<a href="https://t.me/TeraMoune" target="_blank">TeraMoune</a></p> <details><summary style="color:#ff720e;font-weight:500" role="button">Click here!</summary>Там где [b]X[/b] id плагина. Найти ID можно под иконкой плагина. Например: [code][not-active-plugins=X] Плагин отключен [/not-active-plugins] [active-plugins=X] Плагин включен [/active-plugins][/code] </details>]]></notice> <file name="engine/init.php"> <operation action="before"> <searchcode><![CDATA[//################# Definition of user groups]]></searchcode> <replacecode><![CDATA[//################# Definition of plugins $plugins_active = get_vars ( "plugins_active" ); if (!is_array( $plugins_active )) { $plugins_active = array (); $db->query ( "SELECT id, active FROM " . USERPREFIX . "_plugins ORDER BY id ASC" ); while ( $row = $db->get_row () ) { $plugins_active[$row['id']] = $row['active']; } set_vars ( "plugins_active", $plugins_active ); $db->free (); }]]></replacecode> <enabled>1</enabled> </operation> </file> <file name="engine/modules/main.php"> <operation action="before"> <searchcode><![CDATA[if ( ($allow_active_news AND $news_found AND $config['allow_change_sort'] AND $dle_module != "userinfo") OR defined('CUSTOMSORT')) {]]></searchcode> <replacecode><![CDATA[if (stripos ( $tpl->copy_template, "[active-plugins=" ) !== false) { $tpl->copy_template = preg_replace_callback ( "#\\[(active-plugins)=(\d+?)\\](.*?)\\[/active-plugins\\]#is", "check_plugins", $tpl->copy_template ); } if (stripos ( $tpl->copy_template, "[not-active-plugins=" ) !== false) { $tpl->copy_template = preg_replace_callback ( "#\\[(not-active-plugins)=(\d+?)\\](.*?)\\[/not-active-plugins\\]#is", "check_plugins", $tpl->copy_template ); }]]></replacecode> <enabled>1</enabled> </operation> </file> <file name="engine/modules/functions.php"> <operation action="before"> <searchcode><![CDATA[function check_category( $matches=array() ) {]]></searchcode> <replacecode><![CDATA[function check_plugins( $matches=array() ) { global $plugins_active; $block = $matches[3]; $id_plugins = intval($matches[2]); if( !isset($plugins_active[$id_plugins]) ) return ""; if ($matches[1] == "active-plugins") $action = true; else $action = false; $found = false; if( $action ) { if( $plugins_active[$id_plugins] ) return $block; } else { if( $plugins_active[$id_plugins] ) $found = true; } if ( !$action AND !$found ) { return $block; } return ""; }]]></replacecode> <enabled>1</enabled> </operation> </file> <file name="engine/inc/plugins.php"> <operation action="replace"> <searchcode><![CDATA[class=\"img-lg section_icon\"></div>]]></searchcode> <replacecode><![CDATA[class=\"img-lg section_icon\"><span style=\"color: #979696;text-align: center;display: inline-block;width: 100%;font-weight: 500;\">{$row['id']}</span></div>]]></replacecode> <enabled>1</enabled> </operation> </file> </dleplugin> 1 3 Цитата Ссылка на сообщение Поделиться на других сайтах
Lexxs 16 Опубликовано: 1 февраля 2023 Рассказать Опубликовано: 1 февраля 2023 Автор 13 часов назад, TeraMoune сказал: Вот вам временное решение пока таких тегов не появилось. Скрыть содержимое <?xml version="1.0" encoding="utf-8"?> <dleplugin> <name>Tagsblock active plugins</name> <description>Добавляет теги [active-plugins=X] и [not-active-plugins=X] которые управляют отображением содержимого в шаблонах в зависимости от состояния плагина.</description> <icon></icon> <version></version> <dleversion>13.2</dleversion> <versioncompare>greater</versioncompare> <upgradeurl></upgradeurl> <filedelete>0</filedelete> <needplugin></needplugin> <mnotice>1</mnotice> <mysqlinstall><![CDATA[]]></mysqlinstall> <mysqlupgrade><![CDATA[]]></mysqlupgrade> <mysqlenable><![CDATA[]]></mysqlenable> <mysqldisable><![CDATA[]]></mysqldisable> <mysqldelete><![CDATA[]]></mysqldelete> <phpinstall><![CDATA[]]></phpinstall> <phpupgrade><![CDATA[]]></phpupgrade> <phpenable><![CDATA[]]></phpenable> <phpdisable><![CDATA[]]></phpdisable> <phpdelete><![CDATA[]]></phpdelete> <notice><![CDATA[<p>@<a href="https://t.me/TeraMoune" target="_blank">TeraMoune</a></p> <details><summary style="color:#ff720e;font-weight:500" role="button">Click here!</summary>Там где [b]X[/b] id плагина. Найти ID можно под иконкой плагина. Например: [code][not-active-plugins=X] Плагин отключен [/not-active-plugins] [active-plugins=X] Плагин включен [/active-plugins][/code] </details>]]></notice> <file name="engine/init.php"> <operation action="before"> <searchcode><![CDATA[//################# Definition of user groups]]></searchcode> <replacecode><![CDATA[//################# Definition of plugins $plugins_active = get_vars ( "plugins_active" ); if (!is_array( $plugins_active )) { $plugins_active = array (); $db->query ( "SELECT id, active FROM " . USERPREFIX . "_plugins ORDER BY id ASC" ); while ( $row = $db->get_row () ) { $plugins_active[$row['id']] = $row['active']; } set_vars ( "plugins_active", $plugins_active ); $db->free (); }]]></replacecode> <enabled>1</enabled> </operation> </file> <file name="engine/modules/main.php"> <operation action="before"> <searchcode><![CDATA[if ( ($allow_active_news AND $news_found AND $config['allow_change_sort'] AND $dle_module != "userinfo") OR defined('CUSTOMSORT')) {]]></searchcode> <replacecode><![CDATA[if (stripos ( $tpl->copy_template, "[active-plugins=" ) !== false) { $tpl->copy_template = preg_replace_callback ( "#\\[(active-plugins)=(\d+?)\\](.*?)\\[/active-plugins\\]#is", "check_plugins", $tpl->copy_template ); } if (stripos ( $tpl->copy_template, "[not-active-plugins=" ) !== false) { $tpl->copy_template = preg_replace_callback ( "#\\[(not-active-plugins)=(\d+?)\\](.*?)\\[/not-active-plugins\\]#is", "check_plugins", $tpl->copy_template ); }]]></replacecode> <enabled>1</enabled> </operation> </file> <file name="engine/modules/functions.php"> <operation action="before"> <searchcode><![CDATA[function check_category( $matches=array() ) {]]></searchcode> <replacecode><![CDATA[function check_plugins( $matches=array() ) { global $plugins_active; $block = $matches[3]; $id_plugins = intval($matches[2]); if( !isset($plugins_active[$id_plugins]) ) return ""; if ($matches[1] == "active-plugins") $action = true; else $action = false; $found = false; if( $action ) { if( $plugins_active[$id_plugins] ) return $block; } else { if( $plugins_active[$id_plugins] ) $found = true; } if ( !$action AND !$found ) { return $block; } return ""; }]]></replacecode> <enabled>1</enabled> </operation> </file> <file name="engine/inc/plugins.php"> <operation action="replace"> <searchcode><![CDATA[class=\"img-lg section_icon\"></div>]]></searchcode> <replacecode><![CDATA[class=\"img-lg section_icon\"><span style=\"color: #979696;text-align: center;display: inline-block;width: 100%;font-weight: 500;\">{$row['id']}</span></div>]]></replacecode> <enabled>1</enabled> </operation> </file> </dleplugin> Спасибо ! Попробую ! По результату отпишусь. Цитата Ссылка на сообщение Поделиться на других сайтах
Lexxs 16 Опубликовано: 1 февраля 2023 Рассказать Опубликовано: 1 февраля 2023 Автор Отлично! Плагин работает. Спасибо большое! Если бы в дле уже был такой встроенный инструмент, было бы ещё лучше ) Цитата Ссылка на сообщение Поделиться на других сайтах
Lexxs 16 Опубликовано: 11 мая 2023 Рассказать Опубликовано: 11 мая 2023 Автор 01.02.2023 в 00:19, TeraMoune сказал: Вот вам временное решение пока таких тегов не появилось. Показать содержимое <?xml version="1.0" encoding="utf-8"?> <dleplugin> <name>Tagsblock active plugins</name> <description>Добавляет теги [active-plugins=X] и [not-active-plugins=X] которые управляют отображением содержимого в шаблонах в зависимости от состояния плагина.</description> <icon></icon> <version></version> <dleversion>13.2</dleversion> <versioncompare>greater</versioncompare> <upgradeurl></upgradeurl> <filedelete>0</filedelete> <needplugin></needplugin> <mnotice>1</mnotice> <mysqlinstall><![CDATA[]]></mysqlinstall> <mysqlupgrade><![CDATA[]]></mysqlupgrade> <mysqlenable><![CDATA[]]></mysqlenable> <mysqldisable><![CDATA[]]></mysqldisable> <mysqldelete><![CDATA[]]></mysqldelete> <phpinstall><![CDATA[]]></phpinstall> <phpupgrade><![CDATA[]]></phpupgrade> <phpenable><![CDATA[]]></phpenable> <phpdisable><![CDATA[]]></phpdisable> <phpdelete><![CDATA[]]></phpdelete> <notice><![CDATA[<p>@<a href="https://t.me/TeraMoune" target="_blank">TeraMoune</a></p> <details><summary style="color:#ff720e;font-weight:500" role="button">Click here!</summary>Там где [b]X[/b] id плагина. Найти ID можно под иконкой плагина. Например: [code][not-active-plugins=X] Плагин отключен [/not-active-plugins] [active-plugins=X] Плагин включен [/active-plugins][/code] </details>]]></notice> <file name="engine/init.php"> <operation action="before"> <searchcode><![CDATA[//################# Definition of user groups]]></searchcode> <replacecode><![CDATA[//################# Definition of plugins $plugins_active = get_vars ( "plugins_active" ); if (!is_array( $plugins_active )) { $plugins_active = array (); $db->query ( "SELECT id, active FROM " . USERPREFIX . "_plugins ORDER BY id ASC" ); while ( $row = $db->get_row () ) { $plugins_active[$row['id']] = $row['active']; } set_vars ( "plugins_active", $plugins_active ); $db->free (); }]]></replacecode> <enabled>1</enabled> </operation> </file> <file name="engine/modules/main.php"> <operation action="before"> <searchcode><![CDATA[if ( ($allow_active_news AND $news_found AND $config['allow_change_sort'] AND $dle_module != "userinfo") OR defined('CUSTOMSORT')) {]]></searchcode> <replacecode><![CDATA[if (stripos ( $tpl->copy_template, "[active-plugins=" ) !== false) { $tpl->copy_template = preg_replace_callback ( "#\\[(active-plugins)=(\d+?)\\](.*?)\\[/active-plugins\\]#is", "check_plugins", $tpl->copy_template ); } if (stripos ( $tpl->copy_template, "[not-active-plugins=" ) !== false) { $tpl->copy_template = preg_replace_callback ( "#\\[(not-active-plugins)=(\d+?)\\](.*?)\\[/not-active-plugins\\]#is", "check_plugins", $tpl->copy_template ); }]]></replacecode> <enabled>1</enabled> </operation> </file> <file name="engine/modules/functions.php"> <operation action="before"> <searchcode><![CDATA[function check_category( $matches=array() ) {]]></searchcode> <replacecode><![CDATA[function check_plugins( $matches=array() ) { global $plugins_active; $block = $matches[3]; $id_plugins = intval($matches[2]); if( !isset($plugins_active[$id_plugins]) ) return ""; if ($matches[1] == "active-plugins") $action = true; else $action = false; $found = false; if( $action ) { if( $plugins_active[$id_plugins] ) return $block; } else { if( $plugins_active[$id_plugins] ) $found = true; } if ( !$action AND !$found ) { return $block; } return ""; }]]></replacecode> <enabled>1</enabled> </operation> </file> <file name="engine/inc/plugins.php"> <operation action="replace"> <searchcode><![CDATA[class=\"img-lg section_icon\"></div>]]></searchcode> <replacecode><![CDATA[class=\"img-lg section_icon\"><span style=\"color: #979696;text-align: center;display: inline-block;width: 100%;font-weight: 500;\">{$row['id']}</span></div>]]></replacecode> <enabled>1</enabled> </operation> </file> </dleplugin> Что то перестало работать. DLE 16.0, PHP 8.2. В fullstory.tpl Вставляю [active-plugins=10] Текст [/active-plugins] - выводит исходный код тега текстом. Или теги будут только в main.tpl работать ? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 11 мая 2023 Рассказать Опубликовано: 11 мая 2023 38 минут назад, Lexxs сказал: Что то перестало работать. DLE 16.0, PHP 8.2. В fullstory.tpl Вставляю [active-plugins=10] Текст [/active-plugins] - выводит исходный код тега текстом. Или теги будут только в main.tpl работать ? Судя по коду, этот плагин исключительно для шаблона main.tpl и ни для каких других файлов шаблона. Цитата Ссылка на сообщение Поделиться на других сайтах
Lexxs 16 Опубликовано: 11 мая 2023 Рассказать Опубликовано: 11 мая 2023 Автор 26 минут назад, celsoft сказал: Судя по коду, этот плагин исключительно для шаблона main.tpl и ни для каких других файлов шаблона. Печально. Нужно бы и чтоб в fullstory работал. Цитата Ссылка на сообщение Поделиться на других сайтах
Lexxs 16 Опубликовано: 11 мая 2023 Рассказать Опубликовано: 11 мая 2023 (изменено) Автор Кажется решил проблему. Взял код из майн и вставил его для engine/modules/show.full.php. Не знаю, насколько это корректно, но вроде работает, по крайней мере исходным текстом тег не выводит. И да, celsoft спасибо за подсказку!) Хорошо бы такие теги в коробочке DLE иметь в комплекте ). Изменено 11 мая 2023 пользователем Lexxs Цитата Ссылка на сообщение Поделиться на других сайтах
TeraMoune 56 Опубликовано: 11 мая 2023 Рассказать Опубликовано: 11 мая 2023 2 часа назад, Lexxs сказал: Взял код из майн и вставил его для engine/modules/show.full.php. Можно и вовсе перенести код который в main.php и разместить его ниже $tpl->compile ( 'main' );, а $tpl->copy_template который используется заменить на $tpl->result['main']. Это применит обработку тегов на всю окончательную вёрстку включая и все шаблоны которые были подключены. Или разместить где-то в template.class.php по принципу как сделаны теги declination, include и другие. Или начиная с 15.3 версии в классе templates есть функция compile_global_tags, там тоже значительная часть глобальных тегов, можно и там пристроить. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Lexxs 16 Опубликовано: 11 мая 2023 Рассказать Опубликовано: 11 мая 2023 Автор 1 час назад, TeraMoune сказал: Можно и вовсе перенести код который в main.php и разместить его ниже $tpl->compile ( 'main' );, а $tpl->copy_template который используется заменить на $tpl->result['main']. Это применит обработку тегов на всю окончательную вёрстку включая и все шаблоны которые были подключены. Или разместить где-то в template.class.php по принципу как сделаны теги declination, include и другие. Или начиная с 15.3 версии в классе templates есть функция compile_global_tags, там тоже значительная часть глобальных тегов, можно и там пристроить. Спасибо! Можно будет и так попробовать сделать ). Как время будет, поэксперементирую ). А может уже скоро 16.1 выйдет и уже в комплекте будут такие теги ? )) Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.