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

Social proof: client quote, name, role, and avatar. Multiple testimonials render in a grid.
Testimonials repeater: Quote, Name, Role, Photo. Photo is optional but helps trust.
| Parameter | Value |
|---|---|
| key | testimonials |
| Layer | Free |
| Category | social proof (social) |
| Chunk | pagebuilder_testimonials |
| 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 |
|---|---|---|---|
quote | textarea | Quote | yes |
name | text | Name | yes |
role | text | Role | no |
avatar | image | Avatar | no |
pb-testimonials grid: blockquote, author line, avatar partial.
Example payload after save. Media, video, and map values may be enriched on output:
{
"title": "Section title",
"items": [
{
"_rowId": "00000000-0000-4000-8000-000000000001",
"quote": "Great service, I recommend it to colleagues.",
"name": "Jane Doe",
"role": "Director, Example LLC",
"avatar": {
"url": "assets/images/example.jpg",
"id": 12,
"filename": "example.jpg",
"extension": "jpg",
"title": "example.jpg",
"width": 1920,
"height": 1080,
"type": "image"
}
}
]
}Fenom chunk pagebuilder_testimonials:
<section class="pb-section pb-section--testimonials pb-testimonials{if $cssClass} {$cssClass|escape}{/if}" data-pb-section="testimonials"{if $id} id="pb-{$id|escape}"{/if}>
<div class="pb-section__inner pb-testimonials__inner">
{if $title}
<h2 class="pb-heading pb-testimonials__title">{$title|escape}</h2>
{/if}
<div class="pb-testimonials__grid">
{foreach $items as $item}
<blockquote class="pb-testimonials__item">
{if $item.avatar}
{include 'pagebuilder_partial_image' image=$item.avatar alt=$item.name class='pb-testimonials__avatar'}
{/if}
<p class="pb-testimonials__quote">{$item.quote|escape}</p>
<footer class="pb-testimonials__footer">
<div class="pb-testimonials__author">{$item.name|escape}</div>
{if $item.role}
<div class="pb-testimonials__role">{$item.role|escape}</div>
{/if}
</footer>
</blockquote>
{/foreach}
</div>
</div>
</section>core/components/pagebuilder/sections/testimonials.json