Я хочу улучшить заголовок страницы со значением таксономии, установленным в поле.Drupal 8 Термин таксономии в twig
Так название выглядит следующим образом:
Заголовок - [таксономией термин значение]
Чтобы изменить название, я переписал
field--node--title--[content-type].html.twig
До сих пор так хорошо, доступ к узел и другие поля запрашиваются через элемент-элемент:
element['#object'].get('field_my_field').get(0)
К ge t - первый элемент.
element['#object'].get('field_my_field').get(0)['target_id']
возвращает знак таксономии. Но
element['#object'].get('field_my_field').get(0)['name']
возвращает пустой элемент.
Как получить значение поля? Я не могу себе представить, что для этого должен потребоваться PHP-код.
Update: Я придумал, как, но это, кажется, немного сложнее:
Поскольку термины таксономии не разрешены в #object, я должен был добавить hook_preprocess: функцию поля подготовить переменную с необходимыми данными:
function myTheme_preprocess_field(&$variables, $hook){
if ($variables['field_name'] == 'title'){
$variables['my_field'] = Term::load($variables['element']['#object']->get('my_field')->get(0)->getValue()['target_id']);
}
поле теперь может быть доступна в прута следующим образом:
{{ my_field.name.getValue()[0]['value'] }}
Для меня это похоже на большую работу, поэтому более прямой подход очень ценится.
Как это отличается от решения, которое я предложил в обновленном разделе, кроме кода, перемещается из препроцесса в page_suffix? – Denis
Ваше решение будет работать, в то время как мое немного ближе к дизайну Drupal. – augusto