Skip to content
  1. Extras
  2. PageBuilder
  3. Editor and manager
  4. Control panel

PageBuilder control panel

Components → PageBuilder (SectionTypesManager.vue). Permission pagebuilder_manage_types is required for the Blocks tab. Other control panel tabs use standard manager permissions.

Four site-level tabs plus Pro registries, not a single resource:

TabLayerPurpose
BlocksFreeUI builder for section types (pb_section_types)
UTMFreeGlobal UTM parameter registry (pb_utm_params)
CollectionsFreeResource form tab sets by template (pb_collections)
BasketProGlobal basket for deleted sections and table rows
Page templatesProEmpty section skeletons (pb_page_templates), capability page-templates

PageBuilder control panel

Blocks

CRUD section types without PHP deploy. Built-in JSON from core/components/pagebuilder/sections/*.json can be edited, hidden, and restored in the catalog via the control panel.

Filter by source (chips, choice persists in the browser):

ChipShows
AllPackage and custom types
From packageTypes from package JSON (and their DB UI overrides)
MineTypes created in the control panel

Hide presets bulk-hides package types (published = 0 for UI overrides and custom; for code types hide still goes through lifecycle). Custom types remain. Sections on already built pages are unchanged.

On the type card, Catalog preview: upload a layout screenshot. In + Create on the resource it replaces the package schematic image.

With capability presets (Pro), the Blocks tab has Show examples in catalog toggle that writes pagebuilder_catalog_examples_enabled via mgr/config/save. Same value in system settings.

ActionWhat happens
OverrideRow in pb_section_types, flag overridesCode. DB wins at runtime
HideType hidden in resource catalog, stays in control panel with "Hidden" badge
Delete (code type)Tombstone removedCode in DB. Package JSON is not deleted
RestoreEnable "Show hidden" → Restore

On extra upgrade, pb_section_types rows are not overwritten: DB wins. User system settings are not reset either (update.settings = false). Sections on already published pages keep rendering.

Connector mgr/sectiontype/remove accepts POST parameter lifecycle: hide, remove, restore (not the connector action). Bulk hide passes array keys.

JSON schema details: Developer → Section definition.

UTM

Parameters for {{utm:key}} placeholders and default values. Section visibility rules are set in the Visibility dialog on the resource inspector (settings.utm) when pagebuilder_inspector_visibility_enabled is on. Not on this tab.

Frontend UTM session: PageBuilderUtmSession before PageBuilder. Links: Snippets.

Collections

A collection binds to template_ids (empty list means all templates). With pagebuilder_collections_enabled = 1, legacy tabs resource_tab_enabled and resource_tables_tab_enabled are replaced by the dynamic set from the control panel.

Tab types (tab_type)

TypeBehavior on resource
sectionsSections tab (Vue pagebuilder-resource)
tableResource table data (table_key optional)
resourcesChild resources
emptyPlaceholder (config.message)
modx_collectionsMODX Collections integration (pagebuilder_collections_modx_bridge_enabled)
iframeURL in <iframe>

Collection CRUD and tab resolution for a template: mgr/collection/list, save, remove, resolve.

Settings: System settings → Collections.

Basket (Pro)

Flag basket. Page basket in the resource draft remains in Free.

Index of sections from draft.trash[] and table rows on delete. Sync on pbOnAfterSave. On resource OnEmptyTrash, index rows for that resource_id are removed.

ActionPurpose
mgr/basket/listList (item_type, pagination)
mgr/basket/restoreRestore section or table row
mgr/basket/purgeRemove entry from index
mgr/basket/restoreall / purgeallBulk ops on array ids
WhereWhat it does
Resource editor → BasketOn page: restore and permanent delete in draft (Free)
Control panel → BasketCross-resource: list, restore to source resource, permanent delete (Pro)

Restore from the control panel inserts the section at settings._trashIndex, same as the page basket.