Создание сайта с PageBlocks в режиме разработчика без контролеров и маршрутов

В этой заметке расскажу про свой опыт разработки сайта на CMS MODX + PageBlocks и к чему в итоге пришёл. Дополнение PageBlocks установил платное с modstore.pro. Есть бесплатная версия на modx.com в ней меньше функционала. В PageBlocks два режима разработки сайта: Developer (работаем с файлами) и manager (работаем в админке). Ниже речь пойдет о разработке в режиме разработчика (developer) без создания своих маршрутов и контролеров.
Быстрый старт
- Устанавливаем pdoTools.
- Включаем fenom в системных настройках pdoTools. Устанавливаем «да» у следующих настроек: pdotools_fenom_default, pdotools_fenom_parser, pdotools_fenom_modx.
- У настройки pdotools_elements_path ставим значение {core_path}App/elements/ — в этом каталоге будем создавать файлы шаблонов и чанков (блоков).
- Устанавливаем PageBlocks с modstore.pro.
- В системных настройках PageBlocks находим pageblocks_development_mode и ставим значение Developer.
- Устанавливаем остальные дополнения: pThumb, TinyMCE Rich Text Editor и другие по необходимости.
- В шаблоне в админке подключаем файловый шаблон. Пишем {insert 'file:templates/home.tpl'}.
- Далее идём в папку core/App/elements/templates/ и создаём тут шаблоны на феноме. Я создаю base.tpl и остальные шаблоны. В принципе можно и одним обойтись.
- В шаблоне где нужно выводить блоки PageBlocks вставляем сниппет pbBlocks.
- Добавляем блоки в метод getBlocks в файле по этому пути core/App/Models/Resource.php.
- Создаём чанки блоков тут /core/App/elements/chunks/.
- Идём в админку. Выбираем нужный ресурс, вкладку PageBlocks нажимаем создать. Выбираем нужный блок и заполняем его.
- Публикуем ресурс и всё готово.
Пример базового шаблона
<!DOCTYPE html>
<html lang="ru">
<head>
{insert 'file:chunks/head.tpl'}
{block 'head'}
{/block}
</head>
<body>
{insert 'file:chunks/header.tpl'}
{block 'content'}
{/block}
{insert 'file:chunks/footer.tpl'}
</body>
</html>
Пример, шаблона с блоками, которые выводятся через сниппет PageBlocks
{extends 'file:templates/base.tpl'}
{block 'content'}
{'!pbBlocks'|snippet: [
'fileElements' => 1,
]}
{/block}
Создаём блоки
Находим файл, расположенный тут /core/App/Models/Resource.php. Находим метод getBlocks и внутри квадратных скобок добавляем блоки, через запятую. Пример ниже.
Block::make('Name')
->title('Название')
->fields([
Field::make('title')
->label('Заголовок')
->help('Напишите тут подсказку для менеджера')
->required(),
// тут следующие поля по такой же аналогии
])
Создаём чанки для блоков
Идём в каталог /core/App/elements/chunks/ и создаём тут файл. Название должно совпадать с названием блока из пункта выше, например, «name.tpl». Вставляем туда вёрстку и заменяем всё, что нужно на плейсхолдеры.
<section>
<div class="container">
<h2>{$title}</h2>
и так далее
</div>
</section>
Заполняем блоки в админке.
Идём в админку, находим или создаём нужный ресурс (если нужно указываем нужный шаблон). Переходим во вкладку «PageBlocks». Нажимаем кнопку «создать». Выбираем или ищем через поиск нужный блок, заполняем. Сохраняем и публикуем ресурс. Проверяем. Всё должно работать.