Как я могу напечатать название словаря вместо указанного термина в шаблоне узла?


Допустим, у меня есть статья типа контента с полем "таксономия".

Словарь - это "фрукты".

Термины "яблоко", "апельсин", "бананы"

Статья принадлежит "оранжевому".

Я могу легко напечатать в своем шаблоне ветки термин статьи:

{{ content.field_taxo_fruit }}

Результат "оранжевый".

Но я не нахожу простого способа напечатать словарный запас: "фрукты".

В другом проекте я использовал views field и использовал "результат перезаписи". Но здесь я использую шаблон ветки, такой как node--article--teaser.html.twig

Author: leymannx, 2019-06-14

2 answers

Вы можете установить подмодуль Devel Kint, а затем распечатать в своем шаблоне {{ kint() }}, чтобы получить красиво напечатанный дамп всех доступных переменных.

К сожалению, я не смог найти там словарную метку/название. Только метка поля:

{{ content.field_taxo_fruit['#title'] }}

Ответ @4k4 ниже выводит только имя машины словаря. Но не ярлык/имя. Но я, наконец, получил название словаря в функции предварительной обработки в MYTHEME.theme, откуда я отправил его в Веточка:

function MYTHEME_preprocess_node__article(&$variables) {

  $node = $variables['node'];

  $vid = array_values($node->field_taxo_fruit->getSettings()['handler_settings']['target_bundles'])[0];

  $vocabulary = \Drupal::entityTypeManager()->getStorage('taxonomy_vocabulary')->load($vid);

  $variables['taxo_fruit_vocab'] = $vocabulary->label();
}

И в node--article.html.twig тогда это:

{% if taxo_fruit_vocab %}
  <div class="taxo-fruit-vocab">
    Vocab: {{ taxo_fruit_vocab }}
  </div>
{% endif %}
 2
Author: leymannx, 2019-06-14 15:00:11

Имя словарной машины - это идентификатор пакета термина, который вы можете получить через объект узла:

{{ node.field_taxo.entity.bundle }}

Чтобы загрузить метку словаря:

{{ node.field_taxo.entity.vid.entity.label }}

Это работает только тогда, когда поле содержит содержимое. Для пустого поля вам придется углубиться в определение поля, которое вы получаете от одного и того же объекта поля, и проверить, ограничено ли поле одним целевым пакетом.

 3
Author: 4k4, 2019-06-16 13:40:45