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

A flexible grid: each card has a title and short text. No icons or buttons, just structured blocks.
Cards repeater: Title and Text per row. Reorder rows in the inspector.
| Parameter | Value |
|---|---|
| key | cards |
| Layer | Free |
| Category | content (content) |
| Chunk | pagebuilder_cards |
| Requires | — |
Fill these fields in the section inspector. Field types are documented in the field types reference.
title) Type text. Optional.
items) Type repeater. Required. Repeatable rows. "Add" button in the inspector.
Each row:
| Field | Type | Label | Required |
|---|---|---|---|
title | text | Title | yes |
text | textarea | Text | no |
pb-cards grid with title + text items.
Example payload after save. Media, video, and map values may be enriched on output:
{
"title": "Section title",
"items": [
{
"_rowId": "00000000-0000-4000-8000-000000000001",
"title": "Section title",
"text": "Supporting text under the title."
}
]
}Fenom chunk pagebuilder_cards:
<section class="pb-section pb-section--cards pb-cards{if $cssClass} {$cssClass|escape}{/if}" data-pb-section="cards"{if $id} id="pb-{$id|escape}"{/if}>
<div class="pb-section__inner pb-cards__inner">
{if $title}
<h2 class="pb-heading pb-cards__title">{$title|escape}</h2>
{/if}
<div class="pb-cards__grid pb-grid pb-grid--cards">
{foreach $items as $item}
<article class="pb-cards__item">
<h3 class="pb-cards__item-title">{$item.title|escape}</h3>
{if $item.text}
<p class="pb-cards__item-text">{$item.text|escape}</p>
{/if}
</article>
{/foreach}
</div>
</div>
</section>core/components/pagebuilder/sections/cards.json