Перейти к содержанию

Не работает хук для кастомного шаблона


Рекомендуемые сообщения

Приветствую.

Решил изменить шапку сайта. Как рекомендуют на офф. сайте 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, который добавляет кнопку очистки уведомлений в юзербар в шапке.

firefox_2023-06-21_20-58-53.jpg.a017072ebdc7ef671a585c5112b3e449.jpg

Это скрин из стандартной темы.

Хук у плагина простой:

/* !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"}',
    ),
  ),

так не работает.

Изменено пользователем edmsl
Ссылка на комментарий
Поделиться на другие сайты

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">

 

Ссылка на комментарий
Поделиться на другие сайты

Exception Спасибо. Да, так и есть. class_core_front_global.

Вообще, вся эта затея с заменой шаблонов мне уже не нравится. Мало того, что плагины после этого не работают, так еще и стандартные фишки, типа цвета имени пользователя в постконтейнере (его я тоже изменил и заменил шаблон), тоже не работают.

Как говорится, из двух зол выбираем меньшее. Придется править оригинальные шаблоны.

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, edmsl сказал:

Придется править оригинальные шаблоны.

Правильнее будет сделать плагин и при помощи хуков изменять шаблоны темы.
Если напрямую изменять шаблоны, то при обновлении ips он их не обновит, что может привести к ошибкам и т.д.

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, Exception сказал:

Если напрямую изменять шаблоны, то при обновлении ips он их не обновит,

Кто-то писал, что при обновлении ips будет предложено выбрать, какой код добавить в шаблон, текущий или новый. Или это не то?

6 минут назад, Exception сказал:

Правильнее будет сделать плагин и при помощи хуков изменять шаблоны темы.

Тогда придется для все плагины изменять, которые связаны с измененными шаблонами.

На самом деле мне больше нравится идея создания отдельных шаблонов для изменений, но вот эти вот проблемы с плагинами удручают.

Ссылка на комментарий
Поделиться на другие сайты

7 минут назад, edmsl сказал:

Или это не то?

Нет, при обновлении ips просто пропустит модифицированные шаблоны

Ссылка на комментарий
Поделиться на другие сайты

12 минут назад, edmsl сказал:

Кто-то писал, что при обновлении ips будет предложено выбрать, какой код добавить в шаблон, текущий или новый. Или это не то?

нет. это вроде при обновлении стиля такое происходит. к примеру у вас левый стиль, не дефолт. и он у вас правленый своими кодами и т.д

и при обновлении стиля оно будет предлагать замену кода

Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, Exception сказал:

Правильнее будет сделать плагин и при помощи хуков изменять шаблоны темы.

Если я правильно все понимаю, то имеется ввиду перенос в хуки какого-то нового, созданного мной, плагина всех тех изменений, что я сделал в теме путем создания новых файлов шаблонов? Т.е. я удаляю все те новые шаблоны, а их код реализую через плагин?

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...