Візуалізуйте поле вузла всередині page.html.twig


12

У мене є тип зображення для мого типу вмісту (field_hero_image).

Я не хочу, щоб він відображався у файлі node.html.twig. Однак я НЕ хочу відобразити це у файлі page.html.twig. Зокрема, я хочу відобразити його поряд із заголовком сторінки.

Який код я використовував би у своєму файлі page.html.twig, щоб отримати доступ до полів рівня вузла та надати їх?

(Опубліковано подібне запитання, але я не зміг використати відповідь, наданий там, щоб вирішити свою проблему.)

Це для тематики Drupal 8.


2
@kiamlaluno - чому ти змінив моє запитання ?? Якщо в заголовку ТА у запитанні "Drupal 8" є очевидним для потенційних провайдерів, які надають І І, це значно полегшує пошук у Google, враховуючи поширеність вмісту Drupal 6 та 7 там; зробити так, щоб питання та відповіді щодо Drupal 8 були дуже зрозумілими, корисно комуністично шукати конкретні відповіді D8. Цікавилося, що це за ваші міркування про зміну.
kraftybasterd

Будь ласка, не дублюйте теги у заголовках питань; теги видно в кожному місці. Видно питання, тому немає необхідності використовувати теги також у назві питання.
kiamlaluno

2
Очевидно, я тут новий ... але чи допомагають метатеги (в даному випадку "8") в результатах пошуку? Я відчуваю, що заголовки вмісту, що містять Drupal 8 або Drupal 7, потенційно можуть допомогти людям, які шукають відповіді через Google ... хоча ідея.
kraftybasterd

Відповіді:


26

Провівши трохи більше досліджень, мені вдалося знайти достатню кількість матеріалів у інших питаннях та на drupal.org, щоб досягти того, що я хотів зробити.

Попередня обробка для цієї відповіді не потрібна, тому не потрібно додавати код до файлу mytheme.theme.
Усі ці змінні за замовчуванням уже доступні у page.html.twig.

Щоб вивести значення за замовчуванням поля всередині page.html.twig, зазвичай використовується змінна Twig, як у {{ node.field_some_name.value }}.

Якщо у вас є поле зображення, ви хочете надати URL-адресу зображенню, збереженому в цьому полі, всередині шаблону page.html.twig, ви б використали {{ file_url(node.field_some_image.entity.fileuri) }}.

Нарешті, якщо ви хочете візуалізувати заголовок вузла всередині шаблону page.html.twig, скористайтеся {{ node.label }}.

Я також навчився використовувати деякі умови Twig для мого конкретного питання, але це виходить за рамки цього питання / відповіді.


Я був скептичним, маючи враження, що в D7 ця штука завжди повинна бути, наприклад, функцією попередньої обробки. Однак приклад file_url()в документах ( drupal.org/docs/8/theming/twig/functions-in-twig-templates ) робить саме це, таким чином, схвалено.
Грехем C

Як ви перебираєте певний тип вмісту та виводите його значення всередині page.html.twig?
Наурус Деруїчі

2

Існує три зручні методи роботи з цим, всі вони заощаджують час копання у складних масивах візуалізації.

  1. Використовуючи програму Display Suite (з підмодулем ds_extras), ви можете призначити області героя блок ("область блоку"), який є іншим режимом відображення (тобто лише одним, що містить зображення героя). Таким чином, ви отримуєте відразу два різних режими відображення. Зауважте, що деякі гачки попередньої обробки можуть не спрацювати, як ви могли очікувати, якщо це зробити.

  2. Модуль twig_tweak значно спрощує подібні завдання і може давати більш легкі висловлювання для значень поля. Погляньте на шпаргалку для деяких поширених цілей: {{ drupal_field('field_image', 'node', 1) }}Підпис функції:drupalField($field_name, $entity_type, $id = NULL, $view_mode = 'default', $langcode = NULL)

  3. Модуль twig_field_value робить простіші заяви твердої гілки. За README.txt:<img src={{ file_url(content.field_image|field_target_entity.uri.value) }} alt={{ content.field_image|field_raw('alt') }} />

Якби я це знав раніше, це врятувало б мені багато часу!


1
Це правильна відповідь. На мій досвід, {{ node.field_some_name.value }}це поле не відображає . Він не викликає повну тематичну систему (функція попередньої обробки, шаблон тощо). OTOH, якщо ви використовуєте twig_tweakмодуль, ви можете отримати повністю {{ node.field_some_name|view }}
виведене
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.