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.

The Blocks tab is in Free. The UTM registry, Workspaces, and the other tabs require PageBuilder Pro.

TabLayerPurpose
BlocksFreeUI builder for section types (pb_section_types)
UTMProGlobal UTM parameter registry (pb_utm_params), capability utm
WorkspacesProResource form tab sets by template (pb_collections), capability collections
BasketProGlobal basket for deleted sections and table rows
Page templatesProEmpty section skeletons (pb_page_templates), capability page-templates
FormsProSchemas for form builder, capability forms
BundleProExport and import of UI section types
API tokensProBearer tokens for REST API v1

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

Requires capability 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. Already published visibility rules still run in Free.

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

Collections

The control panel tab is labeled Workspaces. Requires PageBuilder Pro and capability collections. Without the capability the tabs are absent even when pagebuilder_collections_enabled = 1.

A collection binds to template_ids (empty list means all templates). With the setting on, 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 the section from draft.trash and the index row. published_json is unchanged
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. After purge the section leaves the site only when you press Save on the resource.

Forms

Capability forms. On this tab you create a schema with a key and fields. For select and radio, fill Options: one line per choice, Label|value or value only. On the page, form builder selects that key. Submit goes through FetchIt and the PageBuilderFormBuilder snippet.

The server checks CSRF and the nospam honeypot. Email and webhook leave synchronously after commit, in the same HTTP request. Submissions are not stored. Form v1 does not accept a file. Processors: mgr/form/*.

Bundle

Export UI section types, dry-run, and import in one transaction through UiSectionTypeService.

  1. On the source site open Bundle and export JSON.
  2. On the target site paste the JSON and run dry-run.
  3. The plan shows create, update, or conflict. A conflict is not imported.
  4. Import applies create and update.

Bundle v1 does not include secrets, tokens, page content, table rows, forms, or datasources. Processors: mgr/bundle/*.

API tokens

Capability api. A new token gets a name and scopes pages.read and catalog.read. The secret is shown once. System setting pagebuilder_rest_tokens keeps prefix and the hash.

A revoked token returns 401. Enable the transport with pagebuilder_rest_api_enabled. Routes: REST API v1. Processors: mgr/resttoken/*.