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


Version: Pro.
Simpler than table when you need one text column for the value. keyLabel and valueLabel set the column captions. The row count is not limited by a column list in the schema.
Typed cells or image in cell need table. Single flat map sometimes beats repeater of two text fields.
{
"name": "meta",
"type": "keyvalue",
"label": "Meta",
"keyLabel": "Parameter",
"valueLabel": "Value",
"tab": "Content",
"width": 100,
"active": true
}Array of { key, value }.
Key meta in the section data: array of pairs:
{
"meta": [
{
"key": "author",
"value": "PageBuilder"
},
{
"key": "version",
"value": "1.0"
}
]
}{foreach $meta as $row}
<div><strong>{$row.key}:</strong> {$row.value}</div>
{/foreach}{foreach $meta as $row}
<div><strong>{$row.key|pb_text}:</strong> {$row.value|pb_text}</div>
{/foreach}Column labels: keyLabel, valueLabel (or key_label / value_label).
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 |
keyLabel, valueLabel (or key_label / value_label).See fields overview.