Первая страница
От законченной установки до страницы, которую видит посетитель. Без кода, минут за десять, и всё это работает на бесплатной сборке.
Если ещё не установили — начните с Установки и возвращайтесь.
Что предстоит сделать
Четыре шага, и порядок важен:
| 1 | Поставить стартовые типы блоков — одна кнопка |
| 2 | Сказать шаблону MODX, где печатать тело страницы — одна строка |
| 3 | Добавить блоки на ресурс и заполнить |
| 4 | Опубликовать |
Свежая установка отдаёт пустой конструктор намеренно: компонент не угадывает, какие у вас должны быть блоки. Шаг 1 избавляет от необходимости завести тип и написать шаблон раньше, чем вы увидели хоть что-то работающее.
1. Поставить стартовые типы блоков
PageBlocks → Конструктор → Блоки → кнопка «Наборы».
Выберите стартовый набор, прочитайте план, установите. План читается до записи не для порядка: набор пишет в таблицы конструктора, и список изменений видно заранее, а не по факту.
Получите семь типов: Обложка, Текст, Карточки, Галерея, Вопросы и ответы, Призыв к действию и Отступ. Критерий отбора — собрать лендинг за десять минут, а не набрать побольше позиций. Шаблоны и стили к ним идут в поставке, поэтому они рисуются на вашей теме без единой строки вёрстки с вашей стороны.
Набор бесплатный и входит в обычную поставку. Поставить его дважды безопасно: он ищет по имени и создаёт только недостающее.
Это типы, а не готовые блоки
Набор ставит схемы с полями — то, из чего вы собираете страницу. Ни текста, ни картинок ни на одну страницу он не кладёт; это шаг 3.
Подробнее: Наборы блоков.
2. Сказать шаблону, где печатать тело
Этот шаг пропускают чаще всего, и выглядит пропуск ровно как сломанная установка: блоки добавили, сохранили, страница пустая.
Блоки прикреплены к ресурсу. А где именно на странице они печатаются, решает шаблон MODX. Откройте шаблон, которым пользуется ресурс, и поставьте туда, где должен быть контент:
[[!pbBlocks]]Восклицательный знак обязателен. Без него MODX кэширует вывод, и ваша следующая правка в конструкторе не появится, пока не сбросите кэш, — а читается это как «сохранение не работает».
Это вся интеграция. pbBlocks рисует каждый блок его собственным чанком — тем, который указан у типа, — в том порядке, в котором вы их расставили.
Подробнее: pbBlocks.
3. Добавить блоки и заполнить
Откройте любой ресурс. Вкладка PageBlocks — на форме ресурса.
Нажмите «добавить», выберите из каталога Обложку, заполните заголовок, текст, картинку и кнопку. Добавьте под ней Карточки и заполните несколько строк. Порядок меняется перетаскиванием.
Ничего из этого не окончательно: блок можно отредактировать, скопировать, переставить, удалить и потом достать из корзины.
4. Опубликовать
У блока своя публикация, отдельная от публикации ресурса.
Неопубликованный блок на фронте пропускается молча. Ни ошибки, ни пустого места, ни строки в журнале — его просто нет. Это первое, что надо проверять, когда блок «не рисуется», и уже потом смотреть маршруты и шаблоны.
Сохраните ресурс. Откройте страницу. Блоки на ней.
Стили приезжают сами
Разметочный слой — ширина контента, вертикальный ритм секций и CSS-переменные, которыми стартовые блоки меряют отступы, — регистрирует в <head> событие OnWebPageInit. На обычной странице MODX делать ничего не надо.
Одно исключение. Если вы включили pageblocks_routing и страницу отдаёт ваш маршрут, это событие не наступает: компонент отвечает на запрос и выходит раньше, чем MODX до него доходит. Такому шаблону нужна одна строка в <head>:
{pb_styles()}Весь слой лежит в @layer pageblocks, поэтому любое неслоёное правило темы сильнее него — переопределить одно свойство можно, ничего не выключая. А если вёрстку блоков вы берёте на себя целиком, слой отключается системной настройкой pageblocks_load_styles.
Как сделать вёрстку своей
Шаблоны стартовых блоков лежат в core/components/pageblocks/elements/blocks/. Правка на месте работает ровно до следующего обновления, которое их перезапишет.
Вместо этого скопируйте файл к себе и укажите на него в поле chunk_path у типа блока. Файлы компонента остаются нетронутыми, ваша вёрстка переживает обновления, и они перестают конкурировать.
Внутри шаблона поле — это переменная с именем поля:
<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.
Если блок не появился
Проверяйте в этом порядке — он от дешёвого к дорогому, и первые два случая покрывают большинство:
| Что проверить | Чем это притворяется |
|---|---|
| Блок опубликован? | Неопубликованный пропускается без единого слова |
[[!pbBlocks]] стоит в шаблоне, и с !? | Закэшированный вывод выглядит как «сохранение не работает» |
| Имя чанка совпадает с именем файла? | Отсутствующий шаблон возвращает пустую строку и пишет в журнал [Fenom]: Template … not found. Блок есть на странице, есть в базе — и нигде на сайте |
| Кэш MODX сброшен после установки? | Устаревшая копия PHP или JS выглядит ровно как сломанная установка |
Куда дальше
| Блоки | Завести свой тип блока: поля, вкладки, где его можно размещать |
| Поля | Все 39 типов полей, 30 из них бесплатные |
| Таблицы | Свои таблицы, заполняемые в менеджере — бесплатно |
| Быстрый старт: сниппеты | Списки, меню, фильтры в шаблоне MODX |
| Для разработчиков: маршрутизация | Маршруты, контроллеры и сервисы, без сниппетов вообще |
| Бесплатная и платная | Где проходит платная граница |
