2016-02-20 3 views
2

Я хочу улучшить заголовок страницы со значением таксономии, установленным в поле.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'] }} 

Для меня это похоже на большую работу, поэтому более прямой подход очень ценится.

ответ

1

Для меня, похоже, вам нужно создать правильную page_suffix для страниц title.html.twig шаблона, населенную пользовательского модуля

+0

Как это отличается от решения, которое я предложил в обновленном разделе, кроме кода, перемещается из препроцесса в page_suffix? – Denis

+0

Ваше решение будет работать, в то время как мое немного ближе к дизайну Drupal. – augusto

0

Это должно работать!

{{ my_field.name.value }} 
Смежные вопросы