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

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 }}
4k4
источник
Это отвечает на вопрос, но поскольку другой ответ от Джейни будет более полезным, я добавил это к этому ответу и пометил как принятый.
Тейлор Тафф
1
Но ваш вопрос был неверным: «но я не могу получить доступ к переменной заголовка узла, так как она недоступна в шаблоне поля».
4k4
Да 4к4, вы правы, мой вопрос был неверным.
Тейлор Тафф