Я создаю собственную «стильную» подтему Drupal 8. Теперь я создал тип контента под названием «s-box» с некоторыми текстовыми полями. Я также создал представление под названием «scol», которое представляет собой список «s-box». Этот "scol" добавлен как блок на боковую панель сайта.
Это хорошо работает (это означает, что отображается все), но я хочу, чтобы некоторые поля типов контента были вложены в определенную разметку (например, заголовок в h4). Предпочтительно, я хочу настроить весь вывод для этого типа содержимого «s-box».
Но я не могу понять, как должно быть название веточки. Пока я пробовал:
node--s-box.html.twig (what I thought would be the correct name)
block--scol.html.twig
field--node--s-box.html.twig
field--s-box.html.twig
node--scol.html.twig
scol--s-box.html.twig
Идеальным решением будет шаблон, в котором я могу создать свой собственный html и назначить поля типа контента.
Просто включите Отладка Twig. См. Отладка шаблонов Twig. После того, как вы включили Twig Debugging, вы получите предложение по названию шаблона, напечатанное в виде комментариев HTML прямо в вашей разметке. Там вы увидите, как именно этот шаблон должен называться.
Ваш sites/development.services.yml
должен выглядеть следующим образом:
# Local development services.
#
# To activate this feature, follow the instructions at the top of the
# 'example.settings.local.php' file, which sits next to this file.
parameters:
http.response.debug_cacheability_headers: true
twig.config:
debug: true
auto_reload: true
cache: false
services:
cache.backend.null:
class: Drupal\Core\Cache\NullBackendFactory
И вам нужно добавить следующую строку в ваш settings.php
или settings.local.php
:
/**
* Enable local development services.
*/
$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml';
Что в конечном итоге даст вам что-то вроде этого:
<!-- FILE NAME SUGGESTIONS:
* node--page--j1.html.twig
* node--1--full.html.twig
* node--1.html.twig
* node--page--full.html.twig
* node--page.html.twig
* node--full.html.twig
x node.html.twig
-->
Решение:
Поскольку мой тип контента находится в представлении, я могу получить доступ ко всем полям в views-view-fields--[my-view].html.twig
(в моем случае: views-view-fields--scol.html.twig
)
Ключ - это массив fields
. Я могу получить доступ ко всем полям по их машинному имени. Как fields.title.content
или fields.field_foo.content
.
Таким образом, я могу стилизовать здесь весь вывод s-box.
Спасибо! У меня это уже было включено, но теперь вы снова указываете на это, я нашел решение. Я не заметил, что могу получить доступ ко всем полям в "views-view-fields.html.twig".