Как использовать node—[тип контента]—teaser.html.twig в drupal 8?

#drupal #twig #drupal-8

#drupal #twig #drupal-8

Вопрос:

Я создал пользовательский тип контента с именем Question и имею несколько простых полей в дополнение к одному объекту ссылки, созданному модулем Paragraph. Я видел некоторую документацию о предложении шаблона, но я не понял, как их использовать. Как я могу использовать пользовательский шаблон, чтобы отобразить все мои вопросы?

Ответ №1:

Если вы добавили поля к сущности через административный интерфейс (т. Е. Управляете полями), то вам не нужно создавать пользовательский шаблон twig для общего отображения ваших полей.

То, что вы ищете, — это вкладка «Управление отображением» вашего пользовательского объекта. Вы можете настроить каждое поле для отображения по-разному через пользовательский интерфейс. Сюда входят ссылочные поля.

Вы также можете настроить отображение вашего объекта в соответствии с различными типами отображения, включая тизер.

https://www.drupal.org/docs/8/api/entity-api/display-modes-view-modes-and-form-modes

https://www.drupal.org/docs/8/administering-drupal-8-site/managing-content-0/specify-how-fields-are-displayed

Комментарии:

1. Да, спасибо за ваш ответ @jhchnc Я знаю, что пытаюсь реализовать что-то другое, например, конкурс, мне нужно показать вопрос с ответами и предоставить кнопку для перехода к следующему ответу и, в конце концов, подсчитать, сколько правильных ответов дал пользователь. Итак, мне нужен способ отображения данных в шаблоне вопрос и ответы с флажками!

2. Я понимаю, что у вас есть тип объекта вопроса. Как ваши ответы связаны с этим объектом? Являются ли они полями? Это ссылочный объект?

3. ссылочный объект @jhchnc

Ответ №2:

Вы можете скопировать node.html.twig из вашей базовой темы (Classy) и скопировать в папку с активным шаблоном темы и переименовать в node—[content-type-mechine-name]—teaser.html.twig.

Если вы используете {{ content }}, он должен выводить содержимое так, как вы настроили в управляемом дисплее (admin /structure /types/manage/[content-type]/display). Это поведение по умолчанию.

Если вы хотите больше контроля и отображения по полю, вы можете сделать что-то вроде этого.

 <div class="left">
  {{ content.field_abc }}
 </div>
 <div class="right">
  {{ content.field_xyz }}
 </div>