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


Pick several products in the inspector: the site renders a spec table with one column per product.

Информация
Requires PageBuilder Pro and miniShop3.
Products is a multirelation. Highlight differences marks differing values. The type is marked "cacheable": false.
| Parameter | Value |
|---|---|
| key | product_comparison |
| Layer | Pro |
| Category | Commerce (commerce) |
| Chunk | pagebuilderpro_product_comparison |
| Requires | pro, minishop3 |
Field types: field types reference.
title) Type text. Optional.
products) Type multirelation. Required. Pick multiple resources. JSON stores resource IDs.
highlight_differences) Type yesno. Optional. Yes/no toggle.
pb-product-comparison table.
Example payload after save:
{
"title": "Section title",
"products": [
201,
202,
203
],
"highlight_differences": true
}Fenom chunk pagebuilderpro_product_comparison:
{set $productIds = $comparison_product_ids|default:''}
{set $listing = ''}
{if $productIds}
{set $listing = $modx->runSnippet('msProducts', [
'parents' => 0,
'resources' => $productIds,
'limit' => 4,
'tpl' => 'pagebuilderpro_product_comparison_cell',
'includeVendorFields' => '*',
'includeOptions' => '*',
'withCurrency' => 1,
'showZeroPrice' => 1
])}
{/if}
<section
class="pb-section pb-section--product-comparison pb-product-comparison{if $highlight_differences} pb-product-comparison--diff{/if}{if $cssClass} {$cssClass|escape}{/if}"
data-pb-section="product_comparison"
{if $id} id="pb-{$id|escape}"{/if}
>
<div class="pb-section__inner pb-product-comparison__inner">
{if $title}
<h2 class="pb-heading pb-product-comparison__title">{$title|escape}</h2>
{/if}
{if $listing}
<div class="pb-product-comparison__scroll" tabindex="0" role="region" aria-label="{$title|default:'Product comparison'|escape}">
<div class="pb-product-comparison__grid">
{$listing}
</div>
</div>
{else}
<div class="pb-listing__empty">
<p>{'pagebuilder_fe_comparison_empty_lead' | lexicon}</p>
<p>{'pagebuilder_fe_comparison_empty_hint' | lexicon}</p>
</div>
{/if}
</div>
</section>