Как применить хук для page__user__%?

Главные вкладки

Аватар пользователя teqwer teqwer 21 августа 2017 в 15:31

Всем привет, столкнулся с проблемой применения хука на страницах вида:

hook_preprocess_page__user__%
а также
hook_preprocess_page__node__%

при использовании такого варианта выходит ошибка:

«ParseError: syntax error, unexpected '%', expecting '(' in Drupal\Core\Extension\Extension->load()»

Как применить хук к такого вида страницам?
Заранее благодарю!

Лучший ответ

Аватар пользователя bumble bumble 21 августа 2017 в 17:05
1

Хуки не применяются на страницах.
В хуке (в файле темы) Вы добавляете нужные переменные.
В шаблоне - выводите их, со всеми необходимыми проверками.

Если Вам нужно организовать специфический шаблон - используйте этот материал.

Комментарии

Аватар пользователя bumble bumble 21 августа 2017 в 16:24

А что это за хук такой?

Вот здесь описание хука.

Он строится по принципу:

ИМЯТЕМЫ_preprocess_ИМЯШАБЛОНА.

На Ваших примерах:

  • hook_preprocess_page()
  • hook_preprocess_user()
  • hook_preprocess_node()
Аватар пользователя teqwer teqwer 21 августа 2017 в 16:46

Ну, вот, например, мне нужно вывести переменные на странице пользователя с uid 19,
я применяю хук:

<?phpfunction theme_preprocess_page__user__19(&$variables) {
  kint($variables);}?>

на всех страницах вида page--user применяю хук:

<?phpfunction theme_preprocess_page__user(&$variables) {
  kint($variables);}?>

У меня стоит задача применить хук строго на страницах вида - page--user--%.html.twig, ибо эта страница имеет отличный от page--user.html.twig шаблон.
Чтобы было понятней выкладываю имена своих шаблонов:

<!-- THEME DEBUG -->
<!-- THEME HOOK: 'page' -->
<!-- FILE NAME SUGGESTIONS:
  * page--user--19.html.twig
  x page--user--%.html.twig
  * page--user.html.twig
  * page.html.twig
-->
<!-- BEGIN OUTPUT from 'themes/zqz/templates/system/page--user--%.html.twig' -->
Аватар пользователя bumble bumble 21 августа 2017 в 17:05
1

Хуки не применяются на страницах.
В хуке (в файле темы) Вы добавляете нужные переменные.
В шаблоне - выводите их, со всеми необходимыми проверками.

Если Вам нужно организовать специфический шаблон - используйте этот материал.