+7 988 353-52-54 kompman1@yandex.ru

г. Краснодар

Блоки

Свой блок конструктора: 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 с тем же кодом — используя только его поля. Новый текст — значит новый блок со своим полем.

Статья помогла?