Блоки
Свой блок конструктора: block.json, fields.php, block.twig, пример наполнения, правила, чтобы блок не ломал страницу.
Блок — папка blocks/<code>/ в теме или модуле. Код блока темы начинается с кода темы: aura_hero, aura_reviews.
| Файл | Что |
|---|---|
block.json | название и описание (по-английски, это ключи перевода), категория, значок |
fields.php | поля блока — каждый текст, картинка и ссылка блока — поле |
block.twig | разметка |
sample.json | пример наполнения с реалистичным текстом |
block.css, block.js | по желанию, в пределах класса блока |
fields.php
return FieldGroup::define('block_aura_hero')
->title('Hero settings')
->fields([
Field::text('title')->label('Title')->translatable(),
Field::textarea('text')->label('Text')->translatable(),
Field::image('photo')->label('Photo'),
Field::link('button')->label('Button'),
]);
Подписи полей — по-английски, переводы — в translations/blocks.ru.yaml.
block.twig
<div class="cms-block cms-block--aura_hero aura-hero" id="blk-{{ uid }}">
{% if block.title %}<h1 class="aura-hero__title">{{ block.title }}</h1>{% endif %}
{% if block.text %}<p>{{ block.text }}</p>{% endif %}
{% if block.photo %}{{ cms_image(block.photo, 'large', {alt: block.title}) }}{% endif %}
</div>
Правила:
- корневой элемент выводится всегда, даже с пустыми настройками — редактору нужно, на что нажать;
- блок читает только
block.*и не падает на пустых полях; - текст по умолчанию — через перевод, не строкой в шаблоне;
- отступы секции задаёт секция, а не блок.
Переоформить общий блок
Чтобы поменять вид стандартного блока, положите в тему blocks/<код>/block.twig или block.css с тем же кодом — используя только его поля. Новый текст — значит новый блок со своим полем.