
- MODX 3
- PHP 8.2
- Vue 3


Похоже на Логотипы партнёров, но можно подтянуть бренды (vendors) из категории каталога автоматически.

Информация
Требуются PageBuilder Pro и miniShop3.
Источник: manual (repeater) или Бренды из категории. Для category_vendors укажите Родительскую категорию.
| Параметр | Значение |
|---|---|
| key | brands_row |
| Слой | Pro |
| Категория | магазин (commerce) |
| Chunk | pagebuilderpro_brands_row |
| Требования | pro, minishop3 |
Заполните поля в инспекторе секции на ресурсе. Описание типов полей: справочник типов.
title) Тип text. Необязательное.
source) Тип select. Необязательное. Выпадающий список с заранее заданными вариантами.
parent) Тип relation. Необязательное. Выбор одного ресурса MODX в модальном окне поиска.
limit) Тип number. Необязательное.
items) Тип repeater. Необязательное. Повторяющиеся строки. Кнопка «Добавить» в инспекторе.
В каждой строке:
| Поле | Тип | Подпись | Обязательно |
|---|---|---|---|
logo | image | Логотип | нет |
name | text | Название бренда | да |
url | url | Ссылка | нет |
Ряд pb-brands-row.
Пример JSON после сохранения секции. Для media, video и map значения на выводе могут быть обогащены:
{
"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": "Иван Петров",
"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>