
PageBuilder
Visual section builder for MODX 3: draft and publish without overwriting resource content
- MODX 3
- PHP 8.2
- Vue 3


Version: Pro.
The site loads rows with the PageBuilderTableRows snippet. The section stores settings, not the rows themselves: table key, limit, filters, context, and UTM. Use it when there are too many rows to edit in the inspector.
Chunk [[!PageBuilderTableRows? &table_key=...]]. Static 5–10 rows stay in table.
{
"name": "table",
"type": "embeddedTable",
"label": "Table",
"table_key": "products",
"tab": "Content",
"width": 100,
"active": true
}Object { table_key, limit, filters, … }.
Key table in the section data: query config (table rows are not stored in data):
{
"table": {
"table_key": "products",
"limit": 10,
"filters": {
"category": "phones"
},
"use_context": true,
"context_column": "context_key",
"use_utm": false,
"utm": {}
}
}PageBuilderTableRows snippet with the same table_key.[[!PageBuilderTableRows? &table_key=`products` &limit=`10`]]{'!PageBuilderTableRows' | snippet : [
'table_key' => 'products',
'limit' => 10,
]}For fields with name that are stored in the section data:
| Key | Type | Role | CMP |
|---|---|---|---|
tab | string | Group subtitle in the inspector | yes |
width | 25–100 | Field width as % of the row (flex) | yes |
description | string | Hint under the label | yes |
default | any | Initial value for a new section | yes |
active | bool | false hides the field in the inspector | yes |
required | bool | Required on publish (draft still saves) | yes |
table_key, limit, filters, use_context, utm.See fields overview.