edmsl Опубликовано 21 июня, 2023 Поделиться Опубликовано 21 июня, 2023 (изменено) Приветствую. Решил изменить шапку сайта. Как рекомендуют на офф. сайте 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"}', ), ), так не работает. Изменено 21 июня, 2023 пользователем edmsl Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Exception Опубликовано 21 июня, 2023 Поделиться Опубликовано 21 июня, 2023 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"> aLEX49566 и saiko 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
edmsl Опубликовано 22 июня, 2023 Автор Поделиться Опубликовано 22 июня, 2023 Exception Спасибо. Да, так и есть. class_core_front_global. Вообще, вся эта затея с заменой шаблонов мне уже не нравится. Мало того, что плагины после этого не работают, так еще и стандартные фишки, типа цвета имени пользователя в постконтейнере (его я тоже изменил и заменил шаблон), тоже не работают. Как говорится, из двух зол выбираем меньшее. Придется править оригинальные шаблоны. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Exception Опубликовано 22 июня, 2023 Поделиться Опубликовано 22 июня, 2023 3 часа назад, edmsl сказал: Придется править оригинальные шаблоны. Правильнее будет сделать плагин и при помощи хуков изменять шаблоны темы. Если напрямую изменять шаблоны, то при обновлении ips он их не обновит, что может привести к ошибкам и т.д. edmsl 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
edmsl Опубликовано 22 июня, 2023 Автор Поделиться Опубликовано 22 июня, 2023 2 минуты назад, Exception сказал: Если напрямую изменять шаблоны, то при обновлении ips он их не обновит, Кто-то писал, что при обновлении ips будет предложено выбрать, какой код добавить в шаблон, текущий или новый. Или это не то? 6 минут назад, Exception сказал: Правильнее будет сделать плагин и при помощи хуков изменять шаблоны темы. Тогда придется для все плагины изменять, которые связаны с измененными шаблонами. На самом деле мне больше нравится идея создания отдельных шаблонов для изменений, но вот эти вот проблемы с плагинами удручают. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Exception Опубликовано 22 июня, 2023 Поделиться Опубликовано 22 июня, 2023 7 минут назад, edmsl сказал: Или это не то? Нет, при обновлении ips просто пропустит модифицированные шаблоны Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
SlawkA Опубликовано 22 июня, 2023 Поделиться Опубликовано 22 июня, 2023 12 минут назад, edmsl сказал: Кто-то писал, что при обновлении ips будет предложено выбрать, какой код добавить в шаблон, текущий или новый. Или это не то? нет. это вроде при обновлении стиля такое происходит. к примеру у вас левый стиль, не дефолт. и он у вас правленый своими кодами и т.д и при обновлении стиля оно будет предлагать замену кода edmsl 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
edmsl Опубликовано 22 июня, 2023 Автор Поделиться Опубликовано 22 июня, 2023 SlawkA Да, точно. SlawkA 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
edmsl Опубликовано 22 июня, 2023 Автор Поделиться Опубликовано 22 июня, 2023 7 часов назад, Exception сказал: Правильнее будет сделать плагин и при помощи хуков изменять шаблоны темы. Если я правильно все понимаю, то имеется ввиду перенос в хуки какого-то нового, созданного мной, плагина всех тех изменений, что я сделал в теме путем создания новых файлов шаблонов? Т.е. я удаляю все те новые шаблоны, а их код реализую через плагин? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.