Skip to content
PageBuilder
PageBuilder
Визуальный конструктор секций для MODX 3: черновик и публикация без перезаписи content ресурса
  • MODX 3
  • PHP 8.2
  • Vue 3
  1. Компоненты
  2. PageBuilder
  3. Вывод на сайте
  4. Сниппеты
  5. PageBuilder

Сниппет PageBuilder ​

Выводит опубликованные секции ресурса в HTML. Черновик на сайте не показывается. HTML-путь (параметр return_values не передан) отдаёт пустую строку, пока страницу не опубликовали.

Чанк секции: Free pagebuilder_{key}, Pro pagebuilderpro_{key} (data_table → pagebuilder_data_table). Чанк pagebuilder_data_table ставится вместе с пакетом.

Где вызывать ​

  • Шаблон страницы, собранной во вкладке Секции.
  • Поле content, если шаблон выводит [[*content]].
  • Некэшированный вызов ([[!PageBuilder]]). Без ! HTML может устареть после публикации секций.

Зависимости ​

  • Компонент pagebuilder или pagebuilderpro.
  • pdoTools 3.0+ для Fenom в чанках секций.
  • Опубликованный snapshot секций на ресурсе.

Плагин pagebuilder на pdoToolsOnFenomInit регистрирует модификаторы Fenom: utm_query, pb_href, pb_text, pb_image_src, pb_table, default. В шаблонах они доступны без вызова сниппетов.

Параметры ​

ПараметрПо умолчаниюОписание
resource_id0ID ресурса. 0 = текущий
section_typesпустоКлючи секций через запятую (hero,gallery). Пусто = все опубликованные
return_values01 → JSON { plainText, sections } вместо HTML
use_cache1Кеш MODX для HTML. 0 при отладке событий отрисовки
load_cssиз pagebuilder_load_frontend_cssПодключить pagebuilder-sections.css и связанные стили
wrap_pageкак load_cssОбёртка <div class="pb-page">
qa_css01 → подключить pagebuilder-qa.css. Иначе CSS QA подключается сам, если на странице есть QA-секции

В properties сниппета нет load_css, wrap_page и qa_css, но вызов их принимает. qa_css действует только при включённом load_css. См. Системные настройки → Связь со сниппетом.

Флаги use_cache, load_css, wrap_page, qa_css и return_values читают строку. Выключают 0, false, no, off и пустая строка. Остальные значения включают. То же у настройки pagebuilder_load_frontend_css.

Базовый вызов ​

modx
[[!PageBuilder]]
fenom
{'!PageBuilder' | snippet}

Фильтр по типам секций ​

modx
[[!PageBuilder?
  &section_types=`hero,cta`
]]
fenom
{'!PageBuilder' | snippet : [
  'section_types' => 'hero,cta'
]}

return_values ​

JSON для SEO-плагинов. Структура совпадает с полем values в Public API:

modx
[[!PageBuilder? &return_values=`1`]]
fenom
{'!PageBuilder' | snippet : ['return_values' => 1]}

При return_values=1 срабатывает событие pbOnGetValues. CSS и обёртка pb-page не подключаются. Источник: опубликованный snapshot, если publishedRevision > 0, иначе черновик. Если ресурс не определился, ответ пустая строка, в том числе при return_values=1.

CSS и обёртка ​

При load_css=1 сниппет подключает frontend CSS (см. Дизайн-система). Стили Pro и commerce включаются при флаге pro.

Глобально отключить: pagebuilder_load_frontend_css = 0. На одном вызове: &load_css=`0` .

При &wrap_page=1 плагин вставит CSS на OnWebPagePrerender, даже если load_css=0. Он ищет в выводе class="pb-page" и на настройку не смотрит. Полностью без стилей: wrap_page=0.

Кеш HTML ​

Кеш MODX: partition pagebuilder/{resourceId}, ключ render/{context}/{resourceId}/{publishedRevision}[/{typeHash}]. Сбрасывается при publish/unpublish. Ошибки отрисовки в кеш не попадают.

Кеш обходится полностью, если у документа есть UTM-правила, conditions или секция с cacheable: false. То же для типа с runtimeContext: true: contact_form, form_builder, quiz, dynamic_list, filterable_grid. На таком документе события вызываются на каждый запрос.

События pbOnBeforeRenderDocument и pbOnBeforeRenderSection вызываются при промахе кеша. Кеш отключается на один вызов:

modx
[[!PageBuilder? &use_cache=`0`]]
fenom
{'!PageBuilder' | snippet : ['use_cache' => 0]}

Пропуск секций ​

Секция с невыполненным requires (Pro, miniShop3) не попадает в HTML. Перед проверкой сниппет вызывает pbOnCheckSectionRequirement. Неизвестное требование логируется, и секция пропускается.

См. также ​