Drupal 8: Визуализация элемента коллекции полей в шаблоне ветки


В Drupal 8 у меня есть тип контента, который использует модуль сбора полей следующим образом:

  • field_body (Сбор данных на местах, повторяемый)
    • field_image_alignment(Логическое)
    • field_picture (Изображение)
    • field_free_text (Длинный текст)

Я хочу обсудить тему этих полей. Я переопределил шаблон поля файлом с именем field--node--field-body--news.html (новости - это тип контента, содержащий поля тезисов.).

Шаблон по умолчанию следующий:

{% for item in items %}
    <div{{ item.attributes }}>{{ item.content }}</div>
{% endfor %}

И мой переопределенный шаблон выглядит так:

{% for item in items %}
  {% if item.content['#field_collection_item'].field_image_alignment.value == 1 %}
    {{ dump(item.content['#field_collection_item'].field_picture) }}
    {% endif %}
{% endfor %}

Как я могу отобразить "дочерние" поля field_pictures, field_free_text ? Я использовал item.content['#field_collection_item'].field_image_alignment.value для доступа к простому значению, но я хотел бы иметь визуализированное представление.

Большое спасибо.

Author: ldaguise, 2016-05-02

2 answers

Я только начал изучать Drupal и столкнулся с той же проблемой. Я решил эту проблему, создав пользовательский форматировщик полей:

public function viewElements(FieldItemListInterface $items, $langcode)
{
  $elements = array();
  foreach ($items as $delta => $item)
    if ($item->value !== NULL)
    {
      $builder    = \Drupal::entityTypeManager()->getViewBuilder('field_collection_item');
      $elements[] = $builder->build($builder->view($item->getFieldCollectionItem()));
    }
  return $elements;
}
 2
Author: inkognito, 2016-05-12 15:35:40

Используйте этот модуль для приятного просмотра формата таблицы Ссылка: https://www.drupal.org/project/reference_table_formatter

 -1
Author: Raja, 2016-10-01 20:15:04