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

Version: Free.
YouTube, Vimeo, and upload in one field. Save draft enrich fills embed and provider. Flat video_* when type=video or name contains video.
Chunk should use enrich fields, not raw url only. Frame gallery is gallery, not video.
{
"name": "video",
"type": "video",
"label": "Video",
"tab": "Content",
"width": 100,
"active": true
}Object { url, poster }. poster is a media object like image. Enrich adds embed_url, provider, and watch_url.
Key video in the section data after save enrich (SectionFieldEnricher + VideoEmbedResolver):
{
"video": {
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"embed_url": "https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ",
"provider": "youtube",
"watch_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"poster": {
"url": "assets/images/hero.jpg",
"id": 12,
"path": "assets/images/",
"filename": "hero.jpg",
"extension": "jpg",
"name": "hero",
"title": "hero.jpg",
"width": 1920,
"height": 1080,
"size": 245760,
"type": "image"
}
},
"video_embed_url": "https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ",
"video_provider": "youtube",
"video_watch_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}video_embed_url, video_provider, and video_watch_url are added when the field name contains video or the section has type=video.<iframe src="{$video.embed_url|escape}" title="Video"></iframe>
<img src="{$video.poster.url|escape}" alt="{$video.poster.title|escape}">Flat video_embed_url / video_provider / video_watch_url apply only when the section has type=video or the field name contains "video".
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 |
poster: nested media object. Enrich: embed_url, provider, watch_url.See fields overview.