Size: a a a

2021 February 01

AY

Andrey Yurtaev in Drupal RU
в него можно из шаблона например параграфа передать значения полей
источник

AY

Andrey Yurtaev in Drupal RU
Ivan
А что делать, если надо поставить БЕМ-овский класс какому-нибудь элементы, который рендерится в другом шаблоне?
альтерить, добавлять параметр, передавать вниз по иерархии
источник

I<

Ivan <Chi> in Drupal RU
так вложенный шаблон может быть уже отрендерен Друпалом
источник

AD

Alexander Dubovskoy in Drupal RU
Алексей Кузнецов
ну бэм - это всего лишь способ именования классов. Я про компоненты твига. Есть даже модуль для этой штуки https://www.drupal.org/project/components

Суть в том, что создаёшь компоненты просто как элементы дизайна. Например компонент «карточка», где есть картинка, заголовок и краткое описание. Создаёшь компонент и в нём переменные image, title, text. И вот надо тебе карточками вывести статьи, берёшь шаблон ноды, или тизера ноды и пишешь там:

{% inlclude ‘@component-library/components/card’ with {
 image: content.field_image,
 title: label,
 text: content.body,
}

И если потом такими же карточками нужно вывести, скажем, юзеров или категории, то берёшь соответственно шаблон юзера или термина, инклюдишь туда тот же компонент, только меняешь маппинг полей.

Казалось бы, всё просто и удобно, но ведь поля отрендерятся с шаблонами полей и будет куча лишней разметки. И как тогда лучше поступить, чтобы передавать в компонент только значения полей без обёрток?
мне нравится подход, да.
источник

AY

Andrey Yurtaev in Drupal RU
да, такое бывает сплошь и рядом… тут все в индивидуальном порядке решатется
источник

I<

Ivan <Chi> in Drupal RU
Andrey Yurtaev
альтерить, добавлять параметр, передавать вниз по иерархии
Тут то вся прелесть компонентов и заканчивается. Потому что классы компонента размазываются по несколькоим файлам.
источник

AY

Andrey Yurtaev in Drupal RU
тут важно соблюсти баланс между сложностью шаблона и атомизацией элементов
источник

AY

Andrey Yurtaev in Drupal RU
идеального и при этом универсального варианта пока не нашел
источник

I<

Ivan <Chi> in Drupal RU
Я использую "упрощённый БЕМ". Т.е. элементам блока назначаю классы только если они в том же Твиг файле что и сам блок. Иначе испоьзую обычную CSS вложенность.
источник

I<

Ivan <Chi> in Drupal RU
Кстати, кто-нибудь Tailwind использовал на реальных проектах?
источник

ИЛ

Иван Лещёв in Drupal RU
Алексей Кузнецов
ну бэм - это всего лишь способ именования классов. Я про компоненты твига. Есть даже модуль для этой штуки https://www.drupal.org/project/components

Суть в том, что создаёшь компоненты просто как элементы дизайна. Например компонент «карточка», где есть картинка, заголовок и краткое описание. Создаёшь компонент и в нём переменные image, title, text. И вот надо тебе карточками вывести статьи, берёшь шаблон ноды, или тизера ноды и пишешь там:

{% inlclude ‘@component-library/components/card’ with {
 image: content.field_image,
 title: label,
 text: content.body,
}

И если потом такими же карточками нужно вывести, скажем, юзеров или категории, то берёшь соответственно шаблон юзера или термина, инклюдишь туда тот же компонент, только меняешь маппинг полей.

Казалось бы, всё просто и удобно, но ведь поля отрендерятся с шаблонами полей и будет куча лишней разметки. И как тогда лучше поступить, чтобы передавать в компонент только значения полей без обёрток?
чтобы передавать в компонент значения полей без обёрток, надо передавать в компонент значения полей
источник

ИЛ

Иван Лещёв in Drupal RU
а не рендермассивы
источник

I<

Ivan <Chi> in Drupal RU
Обёртки обычно легко убираются прямо в Твиге {{ content|without('#theme') }}
источник

C

Comrade Gagarin in Drupal RU
Иван Лещёв
чтобы передавать в компонент значения полей без обёрток, надо передавать в компонент значения полей
совет на все деньги
источник

ИЛ

Иван Лещёв in Drupal RU
Comrade Gagarin
совет на все деньги
А вот мой Яндекс кошелёк
41001589527927
источник

C

Comrade Gagarin in Drupal RU
Ivan
Обёртки обычно легко убираются прямо в Твиге {{ content|without('#theme') }}
{{ content.field_name|children }}
источник

I<

Ivan <Chi> in Drupal RU
Comrade Gagarin
{{ content.field_name|children }}
У родителя могут быть какие-нибудь еще свойства заданы. Например #cache
источник

C

Comrade Gagarin in Drupal RU
таки да
источник

I<

Ivan <Chi> in Drupal RU
Оставишь детей без кеша.
источник

C

Comrade Gagarin in Drupal RU
этого допустить никак нельзя!
источник