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

Логотипы pageblocks, modx, pdotools. Зачёркнутый текст контролеры, маршруты

В этой заметке расскажу про свой опыт разработки сайта на CMS MODX + PageBlocks и к чему в итоге пришёл. Дополнение PageBlocks установил платное с modstore.pro. Есть бесплатная версия на modx.com в ней меньше функционала. В PageBlocks два режима разработки сайта: Developer (работаем с файлами) и manager (работаем в админке). Ниже речь пойдет о разработке в режиме разработчика (developer) без создания своих маршрутов и контролеров.

Быстрый старт

  1. Устанавливаем pdoTools.
  2. Включаем fenom в системных настройках pdoTools. Устанавливаем «да» у следующих настроек: pdotools_fenom_default, pdotools_fenom_parser, pdotools_fenom_modx.
  3. У настройки pdotools_elements_path ставим значение {core_path}App/elements/ — в этом каталоге будем создавать файлы шаблонов и чанков (блоков).
  4. Устанавливаем PageBlocks с modstore.pro.
  5. В системных настройках PageBlocks находим pageblocks_development_mode и ставим значение Developer.
  6. Устанавливаем остальные дополнения: pThumb, TinyMCE Rich Text Editor и другие по необходимости.
  7. В шаблоне в админке подключаем файловый шаблон. Пишем {insert 'file:templates/home.tpl'}.
  8. Далее идём в папку core/App/elements/templates/ и создаём тут шаблоны на феноме. Я создаю base.tpl и остальные шаблоны. В принципе можно и одним обойтись.
  9. В шаблоне где нужно выводить блоки PageBlocks вставляем сниппет pbBlocks.
  10. Добавляем блоки в метод getBlocks в файле по этому пути core/App/Models/Resource.php.
  11. Создаём чанки блоков тут /core/App/elements/chunks/.
  12. Идём в админку. Выбираем нужный ресурс, вкладку PageBlocks нажимаем создать. Выбираем нужный блок и заполняем его.
  13. Публикуем ресурс и всё готово.

Пример базового шаблона

<!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». Нажимаем кнопку «создать». Выбираем или ищем через поиск нужный блок, заполняем. Сохраняем и публикуем ресурс. Проверяем. Всё должно работать.

На сайте используются файлы cookies, чтобы сделать сайт лучше. Оставаясь на сайте, вы соглашаетесь с политикой конфиденциальности и использованием файлов cookies