
PageBuilder
Визуальный конструктор секций для MODX 3: черновик и публикация без перезаписи content ресурса
- MODX 3
- PHP 8.2
- Vue 3


Секция downloads выводит файлы из repeater. Chunk: pagebuilderpro_downloads. Требуется PageBuilder Pro.
Поле file на сайте отдаёт url media-записи.

| Параметр | Значение |
|---|---|
| key | downloads |
| Слой | Pro |
| Категория | контент (content) |
| Chunk | pagebuilderpro_downloads |
| Требования | pro |
| Поле | Тип | Обязательно | Назначение |
|---|---|---|---|
title | text | нет | Заголовок секции |
items | repeater | да | Файлы |
items.title | text | да | Название |
items.file | file | да | Файл |
items.description | textarea | нет | Описание |
Список ul.pb-downloads__list. file может быть строкой или объектом с url. Если URL пустой, заголовок остаётся <span>, не ссылкой. Пустой repeater оставляет пустой список.
{
"title": "Файлы",
"items": [
{
"title": "Прайс",
"file": { "url": "assets/files/price.pdf" },
"description": "PDF, 1 МБ"
}
]
}Fenom chunk pagebuilderpro_downloads:
<section class="pb-section pb-section--downloads pb-downloads{if $cssClass} {$cssClass|escape}{/if}" data-pb-section="downloads"{if $id} id="pb-{$id|escape}"{/if}>
<div class="pb-section__inner">
{if $title}<h2 class="pb-heading">{$title|escape}</h2>{/if}
<ul class="pb-downloads__list">
{foreach $items as $item}
{set $fileUrl = is_array($item.file) ? ($item.file.url ?: '') : ($item.file ?: '')}
<li class="pb-downloads__item">
{if $fileUrl}
<a href="{$fileUrl|escape}">{$item.title|escape}</a>
{else}
<span>{$item.title|escape}</span>
{/if}
{if $item.description}<p>{$item.description|escape}</p>{/if}
</li>
{/foreach}
</ul>
</div>
</section>