🚀 Что такое PageBlocks
PageBlocks — это не просто дополнение, а полноценная платформа управления данными и интерфейсами для MODX.
Она позволяет разработчикам строить архитектуру проекта из контроллеров, таблиц, блоков и шаблонов, а менеджерам — наполнять сайт без участия программиста.
Третья версия — переписанная, а не обновлённая
PageBlocks 3 построен на Eloquent и миграциях Phinx. Вторая версия работала на собственной библиотеке запросов и xPDO-картах, поэтому обновления на месте с 2.x пока нет, и две линейки описаны отдельно. Страницы про pbQuery, события pbOn* и набор сниппетов 2.x относятся только ко второй версии.
PageBlocks подходит всем:
- 🧑💼 Менеджерам — простой и понятный интерфейс. Страницы собираются из готовых блоков, которые можно редактировать, копировать, упорядочивать и публиковать.
- 👨💻 Начинающим разработчикам — блоки, вкладки, таблицы и поля можно собирать прямо в админке, без работы с кодом.
- 🧑💻💻 Профессиональным разработчикам — полный контроль через IDE: контроллеры, маршруты, шаблоны и файлы. Проект становится предсказуемым и масштабируемым.
🌟 Преимущества
🧩 1. Конструктор страниц из блоков
Страницы собираются из готовых блоков, как из кубиков LEGO. Менеджер просто выбирает нужные блоки, меняет порядок, заполняет контент — никакого кода.
🖥️ 2. Удобная работа в админке
Создавайте блоки, таблицы, поля, вкладки, панели и меню прямо в интерфейсе — без написания кода. Отличный выбор для начинающих разработчиков.
💻 3. Полный контроль через код
Профи могут описывать всё через файлы и IDE: блоки, шаблоны, контроллеры, маршруты, правила валидации, API. Компонент не ограничивает, а расширяет возможности.
🧠 4. Интуитивный интерфейс
Всё в одном месте: блоки, таблицы, страницы, переводы. Никаких лишних вкладок и сложных конфигураций.
⚡ 5. Быстрый запуск сайтов
Больше не нужно каждый раз «изобретать велосипед». Создавайте лендинги, каталоги, страницы — в 2–3 раза быстрее, чем при обычной верстке в MODX.
🧱 6. Сделан под MODX 3
Третьей версии нужны MODX 3.0+ и PHP 8.2+. Установщик проверяет и то и другое, поэтому на MODX 2.8 он просто откажется ставиться — Eloquent 12 и Phinx 0.16 там не работают. Если у вас MODX 2.x, оставайтесь на PageBlocks 2.
🛠️ 7. Гибкие типы полей
С PageBlocks вы получаете 46 типов полей — от простых текстов и изображений до галерей, карт, Editor.js, иконок, селектов, чекбоксов и связей.
Поля можно повторять, группировать, делать условными и даже вставлять таблицы прямо в блоки — это даёт гибкость при построении любых интерфейсов.
🔄 8. Пагинация, фильтрация и мультиязычность из коробки
Фильтры, списки, языковые версии, переводы — всё уже встроено. Никаких дополнительных компонентов.
🔧 9. Модульность и переиспользуемость
Блоки можно повторно использовать в разных местах и проектах. У сохранённого многоразового блока остаётся связь с мастер-копией, и вы сами выбираете, какие поля синхронизируются, а какие живут своей жизнью.
🧾 10. Встроенный шаблонизатор Fenom
Шаблоны рендерит pbFenom — наш форк Fenom, подключённый как пакет Composer. Работают чанки, файловые шаблоны file: и строки @INLINE:
{foreach $items as $item}
<div class="product">{$item.title}</div>
{/foreach}🔎 11. Конструктор запросов
query() отдаёт конструктор запросов Illuminate к базе MODX. Имя таблицы пишется без префикса — его подставит соединение:
{foreach query('site_content')->where('template', 4)->orderBy('menuindex')->get() as $page}
<a href="{$page->uri}">{$page->pagetitle}</a>
{/foreach}Строки возвращаются обычными объектами, поэтому поля читаются как свойства ($page->uri), а не через геттер. Для ресурсов есть короткий путь — см. Хелперы.
🧰 12. Сниппеты для шаблонов MODX
При установке регистрируются семь сниппетов, поэтому дотянуться до компонента можно из обычного шаблона MODX, не переходя на весь фреймворк:
[[!pbList? &model=`PbResource` &parent=`[[*id]]` &tpl=`chunk:myItem` &limit=`10`]]pbList, pbBlocks, pbResources, pbUsers, pbMenu, pbFilters, pbJson — см. Сниппеты.
⚡ 13. pbFetch — AJAX без боли
Нативный JavaScript-класс для отправки GET, POST, PUT, DELETE-запросов без перезагрузки страницы. Работает с декларативными атрибутами pb-form, pb-trigger, pb-target и т.д.
📊 14. Гибкая работа с UTM-метками
PageBlocks позволяет настраивать отображение блоков в зависимости от UTM-меток. Это делается через интерфейс или в коде (в режиме разработчика). Удобно для персонализации, маркетинга и A/B-тестирования.
🔌 15. REST API с токенами
Любую таблицу конструктора можно опубликовать во внешний API галочкой: выбрать публичное имя, набор отдаваемых полей и разрешённые операции. Клиент приходит с токеном, а не с сессией менеджера, а сам компонент описывает себя через OpenAPI.
🛡️ 16. Безопасность на всех уровнях
CSRF, права доступа, валидация, защита от SQL-инъекций — всё уже встроено и не требует настройки.
🚀 17. Постоянное развитие
Компонент активно развивается: новые функции, улучшения, документация. PageBlocks — это не разовый модуль, а долгосрочное решение.
🎯 Заключение
PageBlocks — это стабильный, гибкий и масштабируемый инструмент, который избавит вас от рутины. Если вы делаете сайты на MODX — установите его первым делом. Он сэкономит дни и недели работы — и менеджерам, и разработчикам.
🛠️ Поддержка
- Версия: 3.0.0-alfa
- Поддержка MODX: 3.0+
- Поддержка PHP: 8.2+
- Автор: Boshnik
🐞 Сообщить об ошибке
Если вы обнаружили ошибку в PageBlocks, создайте issue в репозитории на GitHub.