
- MODX 3
- PHP 8.2
- Vue 3


Сниппет PageBuilder вставляют в шаблон или в поле content. Вызов некэшированный:
[[!PageBuilder]]{'!PageBuilder' | snippet}Опубликованные секции рендерятся через Fenom chunks в core/components/pagebuilder/elements/chunks/. Имя chunk совпадает с полем chunk в JSON типа: pagebuilder_hero, pagebuilder_cta, для Pro — pagebuilderpro_{key}. FenomSectionRenderer буферизует вывод чанка: exception FetchIt или Fenom не оставляет обрезанный HTML на странице.
По умолчанию сниппет регистрирует:
pagebuilder-sections.css: базовые стили секций Freepagebuilder-sections.js (tabs, carousel)Отключить глобально: pagebuilder_load_frontend_css = 0. На одном вызове: &load_css=0``.
Обёртка страницы <div class="pb-page"> управляется wrap_page (по умолчанию совпадает с load_css).
Токены, BEM и Fenom-оболочка: Дизайн-система.
Параметр use_cache=1 (по умолчанию) кеширует итоговый HTML в MODX. После публикации секций сбросьте кеш сайта или временно вызовите с use_cache=0.
События pbOnBeforeRenderDocument и pbOnBeforeRenderSection вызываются только при промахе кеша (когда HTML ещё не закэширован).
Параметр section_types ограничивает вывод списком ключей:
[[!PageBuilder? §ion_types=`hero,cta`]]{'!PageBuilder' | snippet : ['section_types' => 'hero,cta']}Удобно, если нужны фрагменты страницы в разных местах шаблона.
return_values=1 возвращает JSON с извлечёнными значениями полей (plainText, структура sections). Подходит для headless-сценариев или своего шаблонизатора. Срабатывает pbOnGetValues.
В settings секции можно задать:
contexts: список ключей контекста MODX (текущий контекст запроса)utm: правила по UTM из $_SESSION['utm'] после PageBuilderUtmSessionВ Pro при флаге conditions добавляется settings.conditions (loggedIn, guest, context, GET-параметры и др.). Проверка идёт через SectionVisibility и событие pbOnCheckSectionVisibility.
Секция не попадает в HTML, если правило не выполнено.
В менеджере эти блоки открывает диалог Видимость (pagebuilder_inspector_visibility_enabled). См. Рабочий процесс.
При pagebuilder_responsive_apply=manual (по умолчанию) на сайт уходит одно значение breakpoint: query ?pb_bp= или pagebuilder_default_breakpoint.
При css в HTML попадают все значения. Pro-рендер оборачивает их в <span class="pb-rv"> с data-pb-bp, стили media query подключаются автоматически. В chunk для таких полей:
{$title|pb_text}pb_text пропускает разметку .pb-rv и экранирует обычный текст. Не заменяйте его на |escape, иначе сломается CSS-режим.
Схема поля и JSON: Обзор полей → responsive. Настройки: Системные настройки → Responsive.
Публичный сайт показывает только опубликованную версию. Черновик смотрят через менеджер (кнопка Preview) или URL:
{assets_url}components/pagebuilder/preview.php
Токен подписывается pagebuilder_preview_secret. В iframe подключаются CSS шаблона (pagebuilder_preview_include_template_css) и список из pagebuilder_preview_css_urls.
pbOnBeforeRenderSection.Plugin может подменить секцию до рендера chunk через SectionRenderPipeline::replaceSection().