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


Like Logo cloud, but can pull vendors from a catalog category automatically.

Информация
Requires PageBuilder Pro and miniShop3.
Source: manual repeater or Category vendors. For category_vendors, set Parent category.
| Parameter | Value |
|---|---|
| key | brands_row |
| Layer | Pro |
| Category | commerce (commerce) |
| Chunk | pagebuilderpro_brands_row |
| Requires | pro, minishop3 |
Fill these fields in the section inspector. Field types are documented in the field types reference.
title) Type text. Optional.
source) Type select. Optional. Dropdown with predefined options.
parent) Type relation. Optional. Pick one MODX resource in a search modal.
limit) Type number. Optional.
items) Type repeater. Optional. Repeatable rows. "Add" button in the inspector.
Each row:
| Field | Type | Label | Required |
|---|---|---|---|
logo | image | Logo | no |
name | text | Brand name | yes |
url | url | Link | no |
pb-brands-row.
Example payload after save. Media, video, and map values may be enriched on output:
{
"title": "Section title",
"source": "manual",
"parent": 101,
"limit": 6,
"items": [
{
"_rowId": "00000000-0000-4000-8000-000000000001",
"logo": {
"url": "assets/images/example.jpg",
"id": 12,
"filename": "example.jpg",
"extension": "jpg",
"title": "example.jpg",
"width": 1920,
"height": 1080,
"type": "image"
},
"name": "Jane Doe",
"url": "https://example.com/brand"
}
]
}Fenom chunk pagebuilderpro_brands_row:
{set $brands = $brand_items|default:$items}
<section class="pb-section pb-section--brands-row pb-brands-row{if $cssClass} {$cssClass|escape}{/if}" data-pb-section="brands_row"{if $id} id="pb-{$id|escape}"{/if}>
<div class="pb-section__inner pb-brands-row__inner">
{if $title}
<h2 class="pb-heading pb-brands-row__title">{$title|escape}</h2>
{/if}
{if $brands && ($brands | length) > 0}
<div class="pb-brands-row__grid">
{foreach $brands as $item}
{if $item.url}
<a class="pb-brands-row__item" href="{$item.url|escape}" title="{$item.name|escape}">
{if $item.logo}
{include 'pagebuilder_partial_image' image=$item.logo alt=$item.name class='pb-brands-row__logo'}
{/if}
<span class="pb-brands-row__name">{$item.name|escape}</span>
</a>
{else}
<div class="pb-brands-row__item">
{if $item.logo}
{include 'pagebuilder_partial_image' image=$item.logo alt=$item.name class='pb-brands-row__logo'}
{/if}
<span class="pb-brands-row__name">{$item.name|escape}</span>
</div>
{/if}
{/foreach}
</div>
{else}
<p class="pb-brands-row__empty">{'pagebuilder_fe_brands_empty' | lexicon}</p>
{/if}
</div>
</section>