Posted 21 июня, 20231 yr comment_194059 Приветствую. Решил изменить шапку сайта. Как рекомендуют на офф. сайте invision, сделал свой шаблон (header) в отдельном файле-шаблоне и заменил им оригинал. В globalTemplate заменил это: <div id='ipsLayout_header' class='ipsClearfix'> <header> <div class='ipsLayout_container'> {template="logo" app="core" group="global" params=""} {{if !\in_array('ipsLayout_minimal', \IPS\Output::i()->bodyClasses )}} {template="userBar" app="core" group="global" params=""} {template="mobileNavigationIcon" app="core" group="global" params=""} {{endif}} </div> </header> {template="navBar" app="core" group="global" params=""} {{if !\in_array('ipsLayout_minimal', \IPS\Output::i()->bodyClasses )}}{template="mobileNavBar" app="core" group="global" params=""}{{endif}} </div> на это: {template="header" app="core" location="front" group="_myheader" params=""} У меня стоит плагин Clear Notifications, который добавляет кнопку очистки уведомлений в юзербар в шапке. Это скрин из стандартной темы. Хук у плагина простой: /* !Hook Data - DO NOT REMOVE */ public static function hookData() { return array_merge_recursive( array ( 'userBar' => array ( 0 => array ( 'selector' => '#elFullNotifications_menu > div.ipsMenu_footerBar.ipsType_center', 'type' => 'add_inside_end', 'content' => '{template="clearNotificationsLink" app="core" group="plugins" location="global"}', ), ), ), parent::hookData() ); } /* End Hook Data */ Но шаблон userBar у меня тоже свой, в отдельном файле (_userBar), т.к. я добавил туда одну кнопку, но див по селектору #elFullNotifications_menu > div.ipsMenu_footerBar.ipsType_center присутствует. И хук не добавляет кнопку. Вопрос: можно ли добавить кнопку очистки в кастомный шаблон через хук , а не через правку шаблона _userBar, напрямую прописав туда код шаблона кнопки из плагина? '_userBar' => array ( 0 => array ( 'selector' => '#elFullNotifications_menu > div.ipsMenu_footerBar.ipsType_center', 'type' => 'add_inside_end', 'content' => '{template="clearNotificationsLink" app="core" group="plugins" location="global"}', ), ), так не работает. Edited 21 июня, 20231 yr by edmsl
21 июня, 20231 yr comment_194063 1 час назад, edmsl сказал: так не работает. И не будет, после установки плагина данные о хуке вносятся в бд core_hooks 1. Ты изменил шаблон, но не изменил класс который хукает плагин. Твой плагин скорее всего хукает класс \IPS\Theme\class_core_front_global но твой шаблон как минимум находится в другой группе шаблонов 2. После любых подобных правок не в dev режиме, нужно очистить системные кэши В xml версии плагина есть данные о хуках, например: <hook type="S" class="\IPS\Theme\class_core_front_global" filename="themehookUserBar">
22 июня, 20231 yr Author comment_194070 Exception Спасибо. Да, так и есть. class_core_front_global. Вообще, вся эта затея с заменой шаблонов мне уже не нравится. Мало того, что плагины после этого не работают, так еще и стандартные фишки, типа цвета имени пользователя в постконтейнере (его я тоже изменил и заменил шаблон), тоже не работают. Как говорится, из двух зол выбираем меньшее. Придется править оригинальные шаблоны.
22 июня, 20231 yr comment_194071 3 часа назад, edmsl сказал: Придется править оригинальные шаблоны. Правильнее будет сделать плагин и при помощи хуков изменять шаблоны темы. Если напрямую изменять шаблоны, то при обновлении ips он их не обновит, что может привести к ошибкам и т.д.
22 июня, 20231 yr Author comment_194072 2 минуты назад, Exception сказал: Если напрямую изменять шаблоны, то при обновлении ips он их не обновит, Кто-то писал, что при обновлении ips будет предложено выбрать, какой код добавить в шаблон, текущий или новый. Или это не то? 6 минут назад, Exception сказал: Правильнее будет сделать плагин и при помощи хуков изменять шаблоны темы. Тогда придется для все плагины изменять, которые связаны с измененными шаблонами. На самом деле мне больше нравится идея создания отдельных шаблонов для изменений, но вот эти вот проблемы с плагинами удручают.
22 июня, 20231 yr comment_194073 7 минут назад, edmsl сказал: Или это не то? Нет, при обновлении ips просто пропустит модифицированные шаблоны
22 июня, 20231 yr comment_194074 12 минут назад, edmsl сказал: Кто-то писал, что при обновлении ips будет предложено выбрать, какой код добавить в шаблон, текущий или новый. Или это не то? нет. это вроде при обновлении стиля такое происходит. к примеру у вас левый стиль, не дефолт. и он у вас правленый своими кодами и т.д и при обновлении стиля оно будет предлагать замену кода
22 июня, 20231 yr Author comment_194090 7 часов назад, Exception сказал: Правильнее будет сделать плагин и при помощи хуков изменять шаблоны темы. Если я правильно все понимаю, то имеется ввиду перенос в хуки какого-то нового, созданного мной, плагина всех тех изменений, что я сделал в теме путем создания новых файлов шаблонов? Т.е. я удаляю все те новые шаблоны, а их код реализую через плагин?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.