Как добавить переменную в шаблон поля веток?


9

На странице узла я хотел бы добавить заголовок узла к выводу наряду с другим другим полем (полем примера).

Я создал новый, field--field-example.html.twigно не могу получить доступ к переменной заголовка узла, так как она недоступна в шаблоне поля.

Мне нужно добавить переменные в тему предобработки: themename.theme.

Как добавить переменную в themename.themeи что будет соответствующей записи в field--field-example.html.twig?


Используйте hook_preprocess_node, чтобы извлечь значение из поля, которое вы хотели бы использовать в шаблоне.

@IvanJaros, я обновил вопрос сейчас.
Тейлор Тафф

Ответы:


15

Поскольку вы спрашивали о передаче заголовка узла в качестве переменной через файл .theme, вы можете использовать template_preprocess_field, чтобы сделать что-то вроде этого:

  function themename_preprocess_field(&$variables, $hook) {
    if ($variables['element']['#field_name'] == 'field_example') {
      $variables['node_title'] = $variables['element']['#object']->getTitle();
    }
  }

тогда в вашем field--field-example.html.twigвы можете просто использовать {{node_title}}для визуализации заголовка узла.

Также см. Ответ 4k4 ниже.


Я попытался отредактировать ваш ответ, включив в него ответ, предоставленный 4k4, поскольку он правильный, но мое редактирование было отклонено, поскольку оно было сочтено неуместным ...
Тейлор Тафф

@TaylorTaff, кто одобряет изменения? Я никогда не видел это. Попытка отредактировать, чтобы включить ответ ниже.
Джейни

@Janey многие пользователи с достаточным количеством значков могут просматривать такие правки. Я отметил ваши ответы для будущего просмотра. Еще один вопрос: вы, ребята, уверены, что $variables['element']['#object']->getTitle();это можно поймать preprocess_field? Потому что это действительно ответило бы на мой вопрос здесь: drupal.stackexchange.com/questions/197497/…
nilsun

11

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

Чтобы получить заголовок из узла в шаблоне поля:

{{ element['#object'].label }}

Это отвечает на вопрос, но поскольку другой ответ от Джейни будет более полезным, я добавил это к этому ответу и пометил как принятый.
Тейлор Тафф

1
Но ваш вопрос был неверным: «но я не могу получить доступ к переменной заголовка узла, так как она недоступна в шаблоне поля».
4k4

Да 4к4, вы правы, мой вопрос был неверным.
Тейлор Тафф
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.