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

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

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

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

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

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

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

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

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

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

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

  1. Откройте ресурс → вкладка Секции (нужны pagebuilder_view и право view на ресурс).
  2. Добавить секцию → выберите тип в каталоге → заполните поля в инспекторе справа.
  3. Меняйте порядок перетаскиванием или Alt+↑ / Alt+↓ при выбранной секции в списке.
  4. Черновик уходит на сервер автоматически. Кнопка Сохранить черновик принудительно синхронизирует, если нужно.
  5. Preview или превью по центру вкладки покажет черновик (не публичный URL).
  6. Опубликовать скопирует черновик в published_json. Проверьте страницу на фронте с [[!PageBuilder]].
  7. Снять с публикации уберёт секции с сайта, черновик в редакторе останется.

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

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

Сохранение и revision

Клиент отправляет connector mgr/page/save вместе с номером revision черновика. Сервер сравнивает revision с тем, что в базе.

Если два редактора (или две вкладки) сохранили один ресурс одновременно, приходит ответ revision_conflict. Редактор перезагружает документ с сервера. Обновите вкладку и сохраните снова, не подставляя revision вручную.

Перед Опубликовать клиент проверяет обязательные поля (required: true в JSON типа). При ошибке откроется инспектор первой проблемной секции.

События plugin: pbOnBeforeSave, pbOnAfterSave (режим черновика). В changes передаётся DocumentChangeSet: id секций, которые добавили, удалили, отправили в корзину или восстановили.

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

Опубликовать (mgr/page/publish):

  • копирует текущий черновик в 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 ресурса-источника. Нужны права save на оба ресурса и pagebuilder_save (или эквивалент через политику).

События: pbOnBeforeCopySections, pbOnAfterCopySections.

Копирование переносит выбранные блоки в черновик текущего ресурса. Это не публикация: на сайте изменения появятся только после Опубликовать на целевой странице.

Отмена и повтор

Undo и redo работают в памяти редактора до успешного сохранения черновика на сервер. После mgr/page/save история локальных действий обнуляется.

Быстрые правки одного поля сливаются в одну запись undo: откат вернёт последнее значение, а не каждый символ по отдельности.

Превью черновика

Публичный URL страницы показывает только опубликованные секции. Черновик смотрят так:

  • кнопка Preview на вкладке Секции;
  • iframe-превью по центру редактора после сохранения;
  • прямой 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, опубликуйте страницу заново или временно вызовите сниппет с use_cache=0, затем очистите кеш сайта.

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

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

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

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

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