PageBuilder
Visual section builder for MODX 3. Draft and publish without overwriting resource content

Version: Free.
_rowId stays stable for Vue keys and anchors{foreach} and {$item._rowId|escape} when needed{
"name": "items",
"type": "repeater",
"label": "Items",
"fields": [
{
"name": "title",
"type": "text",
"label": "Title"
}
],
"tab": "Content",
"width": 100,
"active": true
}Array of objects; each row has _rowId.
Key items in the section data: an array of rows; each row has a stable _rowId:
{
"items": [
{
"_rowId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"title": "Item 1"
},
{
"_rowId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"title": "Item 2"
}
]
}{foreach $items as $item}
<article id="{$item._rowId|escape}">
<h3>{$item.title|escape}</h3>
</article>
{/foreach}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 |
fields[] is the row schema; each row in data has _rowId.See fields overview.