Блоки
Блок — это тип секции страницы: набор полей плюс шаблон, который их выводит. Тип создаётся один раз в конструкторе, дальше редактор ставит его на любую страницу и заполняет.
PageBlocks → Конструктор → Блоки.
Тип блока
| Настройка | Что делает |
|---|---|
| Название | Как блок подписан в каталоге добавления |
| Чанк | Имя файла шаблона без расширения. Обязательное |
| Путь к чанку | Своя папка вместо стандартной |
| Описание | Подсказка редактору в каталоге |
| Группа | Разбивает каталог на разделы |
Дальше три вкладки: Поля — из чего блок состоит, Вкладки — как поля сгруппированы в форме, Доступность — где блок разрешено ставить.
Чанк — это файл, а не чанк MODX
Название сбивает с толку: элемент «Чанк» в менеджере MODX здесь ни при чём. Блок ищет файл шаблона.
$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. Блок на странице есть, в базе он есть, а на сайте его нет. Первое, что стоит проверить, когда блок «не выводится», — совпадение имени чанка с именем файла.
Поля попадают в шаблон по именам
Имя поля — это имя переменной:
<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. Перетащили — новый порядок сразу уходит на сервер и пересчитывается для всех блоков страницы.





