Skip to content

Блоки

Блок — это тип секции страницы: набор полей плюс шаблон, который их выводит. Тип создаётся один раз в конструкторе, дальше редактор ставит его на любую страницу и заполняет.

PageBlocks → Конструктор → Блоки.

Меню PageBlocks

Тип блока

НастройкаЧто делает
НазваниеКак блок подписан в каталоге добавления
ЧанкИмя файла шаблона без расширения. Обязательное
Путь к чанкуСвоя папка вместо стандартной
ОписаниеПодсказка редактору в каталоге
ГруппаРазбивает каталог на разделы

Дальше три вкладки: Поля — из чего блок состоит, Вкладки — как поля сгруппированы в форме, Доступность — где блок разрешено ставить.

Чанк — это файл, а не чанк MODX

Название сбивает с толку: элемент «Чанк» в менеджере MODX здесь ни при чём. Блок ищет файл шаблона.

php
$path === ''
    ? view('file:chunks/' . $chunk)          // core/App/elements/chunks/<имя>.tpl
    : view('path:' . $path . '/' . $chunk);  // <путь>/<имя>.tpl

Оставили «Путь к чанку» пустым — файл берётся из core/App/elements/chunks/. Заполнили — из указанной папки.

Файла нет — блок исчезает молча

Отсутствующий шаблон не роняет страницу: view() возвращает пустую строку и пишет в лог MODX [Fenom]: Template … not found. Блок на странице есть, в базе он есть, а на сайте его нет. Первое, что стоит проверить, когда блок «не выводится», — совпадение имени чанка с именем файла.

Поля попадают в шаблон по именам

Имя поля — это имя переменной:

html
<section class="hero" style="background-image:url({$background.url})">
    <div class="container">
        <h1>{$title}</h1>
        <p>{$description}</p>
    </div>
</section>

Здесь title, description и background — то, что задано на вкладке Поля. Полю с файлом или картинкой доступны url, width, height, title.

Блок добавлен на страницу

Доступность

Шесть условий: шаблоны, родители, ресурсы, группы пользователей, пользователи и модель. Пустое условие ничего не ограничивает.

Доступность решает, где блок можно поставить, а не кому его видно

Условия работают в менеджере: они убирают блок из каталога добавления там, где ему не место. Уже поставленный блок они не прячут — на фронте выводится всё опубликованное.

Если блок должен показываться не всем посетителям, это не тот инструмент: смотрите UTM-метки и контекст.

Многоразовые блоки

Когда один и тот же блок нужен на нескольких страницах и должен меняться везде сразу — его место в разделе Многоразовые блоки.

Меню многоразовых блоков

Блок оттуда ставится на страницу так же, как обычный, но остаётся связанным с исходным.

Многоразовый блок на странице

Синхронизация

Связь можно завести и для уже стоящего блока — по идентификатору того, с которым синхронизируемся.

Включение синхронизации

Или снять её, и блок снова станет самостоятельным.

Снятие синхронизации

Что нужно знать про синхронизацию:

  • Разъезжаются значения, а не структура. Поля описаны в типе блока и общие по определению; синхронизация переносит только их содержимое.
  • Правка любой копии расходится по всем, включая исходный блок. Ведущего и ведомого здесь нет — есть общий узел, вокруг которого собраны копии.
  • Набор полей можно сузить: тогда синхронизируются только выбранные, остальные у каждой копии свои.
  • Цепочки запрещены. Синхронизировать блок с тем, который сам уже синхронизирован, компонент не даст и скажет об этом.

Удаление исходного блока не удаляет копии

Копии остаются на страницах со ссылкой на несуществующий блок: содержимое цело, но синхронизация тихо перестаёт работать. Восстановление блока из корзины её оживляет.

Порядок на странице

Блоки сортируются перетаскиванием, порядок хранится в menuindex. Перетащили — новый порядок сразу уходит на сервер и пересчитывается для всех блоков страницы.

© PageBlocks 2019-present