
- MODX 3
- PHP 8.2
- Vue 3


Редактор живёт на вкладке Секции ресурса. Вы собираете страницу из блоков. Autosave держит черновик. Сохранить ресурса MODX публикует секции на сайт.
PageBuilder хранит две копии документа в таблице pb_pages:
| Слой | Где лежит | Кто видит |
|---|---|---|
| Черновик | draft_json | Редактор, превью во вкладке |
| Опубликовано | published_json, счётчик published_revision | Сниппет [[!PageBuilder]] на сайте |
Поле Содержимое ресурса (modResource.content) компонент не трогает. SEO-поля ресурса (pagetitle, description) работают как обычно.
На сайте всегда только опубликованный snapshot. Черновик можно править сколько угодно: на витрину он попадёт после Save ресурса.
Ресурс MODX тоже должен быть опубликован
Даже при опубликованных секциях страница не откроется, если сам ресурс в MODX снят с публикации.
pagebuilder_view и право view на ресурс).mgr/page/save). На сайт это не влияет.mgr/page/publish. Проверьте страницу на фронте с [[!PageBuilder]].mgr/page/unpublish. Черновик в редакторе останется.Отдельной кнопки «Опубликовать» и бейджа «Ещё не на сайте» на вкладке Секции нет (с 1.0.9).
В toolbar переключатель таблица / редакционный список. Default задаёт pagebuilder_resource_view_mode (editorial или table). Выбор менеджера пишется в localStorage. В редакционном списке на строках есть тумблер enable/disable секции.
В боковой панели блок Доставка и API показывает URL Public API и Agent API для текущего ресурса и номер revision.
Подробнее про первую страницу: Быстрый старт.
Клиент отправляет connector mgr/page/save вместе с номером revision черновика. Сервер сравнивает revision с тем, что в базе.
Если два редактора (или две вкладки) сохранили один ресурс одновременно, приходит ответ revision_conflict. Редактор перезагружает документ с сервера. Обновите вкладку и сохраните снова, не подставляя revision вручную.
Перед публикацией (Save ресурса) клиент проверяет обязательные поля (required: true в JSON типа). При ошибке откроется инспектор первой проблемной секции.
События plugin: pbOnBeforeSave, pbOnAfterSave (режим черновика). В pbOnBeforeSave расширения могут заменить документ через PageDocumentBag. В changes передаётся DocumentChangeSet: id секций, которые добавили, удалили, отправили в корзину, восстановили, включили или выключили.
Правила показа секции на сайте (контексты, UTM, Pro conditions, копия для контекста) живут в section.settings. В инспекторе они открываются кнопкой Видимость, если pagebuilder_inspector_visibility_enabled = 1. По умолчанию настройка выключена: редактор видит только поля контента.
Без кнопки правила в JSON всё равно работают на фронте, если их задали раньше или через API. Подробнее: Вывод на сайте → Видимость.
При pagebuilder_responsive_editor_enabled = 1 у подходящих полей появляется иконка планшета: разные значения для desktop / tablet / mobile. Свернуть обратно: Одно значение для всех экранов (берётся desktop), если у поля в схеме нет жёсткого responsive: true. Пока настройка выкл., вкладок устройств нет. Уже сохранённые карты breakpoints на сайте работают, пока редактор не сохранит поле одним значением.
Пороги и режим вывода: Системные настройки → Responsive.
Публикация (mgr/page/publish), обычно из Save ресурса:
published_json;pagebuilder/{resourceId}.Снять с публикации (mgr/page/unpublish) очищает опубликованный snapshot. Черновик не меняется. На сайте сниппет перестанет выводить секции.
События: pbOnBeforePublish, pbOnAfterPublish, pbOnBeforeUnpublish, pbOnAfterUnpublish.
В списке секций (outline):
id в том же черновике.После дубликата или перестановки дождитесь автосохранения или сохраните ресурс, чтобы зафиксировать и опубликовать состояние.
Удаление секции не стирает её сразу. Блок попадает в Корзину на этой же вкладке (document.trash[] внутри черновика).
| Действие | Что происходит |
|---|---|
| В корзину | Секция уходит в trash, в settings сохраняется _trashIndex для восстановления на место |
| Восстановить | Секция возвращается на прежний index или в конец списка |
| Удалить навсегда | Запись исчезает из trash |
| Восстановить все / очистить | Массовое восстановление или окончательное удаление с подтверждением |
События: pbOnBeforeTrash, pbOnAfterTrash.
Это корзина одной страницы. Она не показывает секции с других ресурсов.
При сохранении черновика plugin на pbOnAfterSave синхронизирует таблицу pb_basket_items. Туда попадают секции и строки таблиц, удалённые на разных ресурсах.
| Где | Зачем |
|---|---|
| Редактор ресурса → Корзина | Восстановление в черновике этой страницы (Free) |
| Панель управления → Корзина | Список между ресурсами, восстановление в исходный ресурс, окончательное удаление (Pro) |
Восстановление из панели управления вставляет секцию на позицию _trashIndex, как и локальная корзина.
Копировать секции вызывает connector mgr/copy/sections. Укажите ID ресурса-источника. Нужен view на источник, save на цель и право pagebuilder_save.
События: pbOnBeforeCopySections, pbOnAfterCopySections.
Копируется весь черновик источника и дописывается в конец черновика текущей страницы. Источник не меняется. На сайте изменения появятся после Сохранить на целевой странице.
В Pro дополнительно: Подтянуть с другой страницы (mgr/library/pull) в режиме Связать или Копировать. См. PageBuilder Pro.
Undo и redo работают в памяти редактора до успешного сохранения черновика на сервер. После mgr/page/save история локальных действий обнуляется.
Быстрые правки одного поля сливаются в одну запись undo: откат вернёт последнее значение, а не каждый символ по отдельности.
Публичный URL страницы показывает только опубликованные секции. Черновик смотрят так:
pagebuilder_responsive_breakpoints (по умолчанию 1280 / 768 / 390);{assets_url}components/pagebuilder/preview.php с подписанным токеном (pagebuilder_preview_secret).CSS шаблона и дополнительные стили для iframe задают pagebuilder_preview_include_template_css и pagebuilder_preview_css_urls. Подробнее: Вывод на сайте → Превью.
После публикации или снятия с публикации сбрасывается кеш рендера pagebuilder/{resourceId}.
Сниппет с use_cache=1 (по умолчанию) кеширует итоговый HTML в MODX. Если вы правите Fenom-chunks или plugin на pbOnBeforeRenderSection, опубликуйте страницу заново (Save ресурса) или временно вызовите сниппет с use_cache=0, затем очистите кеш сайта.
Render-события срабатывают только при промахе кеша. Для отладки plugin на рендере отключите кеш сниппета.
При pagebuilder_fake_enabled = 1 в инспекторе секции появляется кнопка Fake. Connector mgr/section/fake заполняет поля детерминированными демо-данными (один и тот же seed даёт одинаковый результат).
Полезно для вёрстки и скриншотов. Перед публикацией на боевой сайт замените fake-значения на реальный контент.