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

Рабочий процесс

Редактор живёт на вкладке Секции ресурса. Вы собираете страницу из блоков. Autosave держит черновик. Сохранить ресурса MODX публикует секции на сайт.

Черновик и опубликованная версия

PageBuilder хранит две копии документа в таблице pb_pages:

СлойГде лежитКто видит
Черновикdraft_jsonРедактор, превью во вкладке
Опубликованоpublished_json, счётчик published_revisionСниппет [[!PageBuilder]] на сайте

Поле Содержимое ресурса (modResource.content) компонент не трогает. SEO-поля ресурса (pagetitle, description) работают как обычно.

На сайте всегда только опубликованный snapshot. Черновик можно править сколько угодно: на витрину он попадёт после Save ресурса.

Ресурс MODX тоже должен быть опубликован

Даже при опубликованных секциях страница не откроется, если сам ресурс в MODX снят с публикации.

Типичный цикл

  1. Откройте ресурс → вкладка Секции (нужны pagebuilder_view и право view на ресурс).
  2. Добавить секцию → в каталоге вкладки Блоки, при Pro ещё Примеры и Общие блоки → выберите тип → откройте Свойства и заполните поля.
  3. Пока инспектор открыт для только что добавленной секции, автосохранение на паузе. Отмена откатывает черновик к состоянию до добавления. После сохранения секция остаётся в документе.
  4. Меняйте порядок перетаскиванием или Alt+↑ / Alt+↓ при выбранной секции в списке.
  5. Autosave периодически шлёт черновик на сервер (mgr/page/save). На сайт это не влияет.
  6. Preview открывает drawer с iframe черновика (не публичный URL). Перед открытием превью сохраняет грязный черновик.
  7. Сохранить ресурс MODX: validate → draft (если dirty) → mgr/page/publish. Проверьте страницу на фронте с [[!PageBuilder]].
  8. Снять с публикации (если доступно в UI) уберёт секции с сайта через mgr/page/unpublish. Черновик в редакторе останется.

Отдельной кнопки «Опубликовать» и бейджа «Ещё не на сайте» на вкладке Секции нет (с 1.0.9).

В toolbar переключатель таблица / редакционный список. Default задаёт pagebuilder_resource_view_mode (editorial или table). Выбор менеджера пишется в localStorage. В редакционном списке на строках есть тумблер enable/disable секции.

В боковой панели блок Доставка и API показывает URL Public API и Agent API для текущего ресурса и номер revision.

Подробнее про первую страницу: Быстрый старт.

Сохранение и 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. Подробнее: Вывод на сайте → Видимость.

Responsive в инспекторе

При pagebuilder_responsive_editor_enabled = 1 у подходящих полей появляется иконка планшета: разные значения для desktop / tablet / mobile. Свернуть обратно: Одно значение для всех экранов (берётся desktop), если у поля в схеме нет жёсткого responsive: true. Пока настройка выкл., вкладок устройств нет. Уже сохранённые карты breakpoints на сайте работают, пока редактор не сохранит поле одним значением.

Пороги и режим вывода: Системные настройки → Responsive.

Публикация и снятие с публикации

Публикация (mgr/page/publish), обычно из Save ресурса:

  • копирует текущий черновик в published_json;
  • увеличивает revision;
  • сбрасывает кеш рендера ресурса pagebuilder/{resourceId}.

Снять с публикации (mgr/page/unpublish) очищает опубликованный snapshot. Черновик не меняется. На сайте сниппет перестанет выводить секции.

События: pbOnBeforePublish, pbOnAfterPublish, pbOnBeforeUnpublish, pbOnAfterUnpublish.

Порядок секций и дубликат

В списке секций (outline):

  • перетаскивание меняет порядок в черновике;
  • Alt+↑ / Alt+↓ двигают выбранную секцию (удобно с клавиатуры);
  • Дублировать создаёт копию с новым id в том же черновике.

После дубликата или перестановки дождитесь автосохранения или сохраните ресурс, чтобы зафиксировать и опубликовать состояние.

Корзина на странице (Free)

Удаление секции не стирает её сразу. Блок попадает в Корзину на этой же вкладке (document.trash[] внутри черновика).

ДействиеЧто происходит
В корзинуСекция уходит в trash, в settings сохраняется _trashIndex для восстановления на место
ВосстановитьСекция возвращается на прежний index или в конец списка
Удалить навсегдаЗапись исчезает из trash
Восстановить все / очиститьМассовое восстановление или окончательное удаление с подтверждением

События: pbOnBeforeTrash, pbOnAfterTrash.

Это корзина одной страницы. Она не показывает секции с других ресурсов.

Глобальная корзина (Pro)

При сохранении черновика 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 страницы показывает только опубликованные секции. Черновик смотрят так:

  • кнопка Preview на вкладке Секции (перед открытием сохраняет грязный черновик);
  • drawer с iframe; ширина viewport из pagebuilder_responsive_breakpoints (по умолчанию 1280 / 768 / 390);
  • прямой URL {assets_url}components/pagebuilder/preview.php с подписанным токеном (pagebuilder_preview_secret).

CSS шаблона и дополнительные стили для iframe задают pagebuilder_preview_include_template_css и pagebuilder_preview_css_urls. Подробнее: Вывод на сайте → Превью.

Кеш HTML на сайте

После публикации или снятия с публикации сбрасывается кеш рендера pagebuilder/{resourceId}.

Сниппет с use_cache=1 (по умолчанию) кеширует итоговый HTML в MODX. Если вы правите Fenom-chunks или plugin на pbOnBeforeRenderSection, опубликуйте страницу заново (Save ресурса) или временно вызовите сниппет с use_cache=0, затем очистите кеш сайта.

Render-события срабатывают только при промахе кеша. Для отладки plugin на рендере отключите кеш сниппета.

Демо-данные (Fake)

При pagebuilder_fake_enabled = 1 в инспекторе секции появляется кнопка Fake. Connector mgr/section/fake заполняет поля детерминированными демо-данными (один и тот же seed даёт одинаковый результат).

Полезно для вёрстки и скриншотов. Перед публикацией на боевой сайт замените fake-значения на реальный контент.

Связанные страницы