hook_user_load на друпал 9

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

Аватар пользователя haver haver 28 сентября 2021 в 15:07

Как вызывается/называется hook_user_load на восьмерке?
hook_ENTITY_TYPE_load ?
https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21...
Не нашел в сети примеров кода из жизни. Хочу объявить в своем модуле кастомные переменные пользователя, которые будут доступны в twig шаблоне профиля пользователя user.html.twig
Для текущего пользователя currentUser()

Комментарии

Аватар пользователя vlucas vlucas 28 сентября 2021 в 15:09
2

Звучит как какой-то велосипед.
Лучше задачу полностью озвучте. Может просто подойдут поля/экстрафилды или ещё что-нибудь.

Аватар пользователя haver haver 28 сентября 2021 в 15:18

vlucas wrote: Звучит как какой-то велосипед.
Лучше задачу полностью озвучте. Может просто подойдут поля/экстрафилды или ещё что-нибудь.

В профиле пользователя показать данные полей из нод, которые связаны с юзером через многозначное поле связь. На юзере есть многозначное поле связь, которое указывает на тип содержимого.

Аватар пользователя haver haver 28 сентября 2021 в 19:05

vlucas wrote: Для этого лучше поискать форматер. Думаю, готовых много найдется

Оказывается в шаблоне twig можно вывести поля связанной сущности таким образом:
{{ user.field_myreferencefield.entity.field_myfield.value }}
field_myreferencefield - имя поля типа связь ссылающееся на тип материала
field_myfield - имя поля в типе материала на который ссылается поле связь, которое нужно вывести.

Аватар пользователя marassa marassa 29 сентября 2021 в 7:49

vlucas wrote: Для этого лучше поискать форматер. Думаю, готовых много найдется

Да тут искать-то особо не надо: форматтер Rendered entity, и создать для материала специальный вьюмод, показывающий только нужные поля, если необходимо.

Аватар пользователя haver haver 29 сентября 2021 в 11:36

gun_dose wrote:
Если нужно передать переменные в шаблон, то нужен hook_preprocess_user.

А где правильней хранить этот код в файле .theme или в своем кастомном модуле?

Аватар пользователя vlucas vlucas 29 сентября 2021 в 11:46
1

Работать будет и там и там, но, если это напрямую не относится к темизации, а больше к функциональной части, то лучше в модуле.