
- MODX 3
- PHP 8.2
- Vue 3


Двухколоночная таблица для технических данных. Сверху необязательный заголовок и вступление.

table редактируется в инспектореПоле Характеристики типа table: колонки параметр и значение. Чередующиеся строки включает zebra-стиль.
| Параметр | Значение |
|---|---|
| key | spec_table |
| Слой | Pro |
| Категория | контент (content) |
| Chunk | pagebuilderpro_spec_table |
| Требования | pro |
Заполните поля в инспекторе секции на ресурсе. Описание типов полей: справочник типов.
title) Тип text. Необязательное.
intro) Тип textarea. Необязательное.
specs) Тип table. Обязательное. Таблица с фиксированными колонками.
Колонки:
| Колонка | Тип | Подпись |
|---|---|---|
label | text | Параметр |
value | text | Значение |
В инспекторе доступны строки-группы (_pbGroup), объединение ячеек (_span по label / value) и превью под сеткой.
striped) Тип yesno. Необязательное. Переключатель да/нет.
HTML-таблица pb-spec-table. При striped добавляется pb-spec-table--striped. Группы — pb-spec-table__row--group. Строки, полностью закрытые span, — pb-spec-table__row--span-cont.
Пример JSON после сохранения. На выводе Pro добавляет spec_rows через TableCells::present() (_pb_cells у каждой строки):
{
"title": "Характеристики",
"intro": "Основные параметры модели.",
"striped": true,
"specs": [
{ "label": "Габариты", "value": "", "_pbGroup": true },
{
"label": "Память",
"value": "128 ГБ",
"_span": { "value": { "colspan": 1, "rowspan": 2 } }
},
{ "label": "Толщина с чехлом", "value": "" },
{ "label": "Цвет", "value": "Графит" }
]
}Fenom chunk pagebuilderpro_spec_table берёт $spec_rows, иначе $specs:
{set $rows = $spec_rows|default:($specs|default:[])}
<section class="pb-section pb-section--spec-table pb-spec-table{if $striped} pb-spec-table--striped{/if}{if $cssClass} {$cssClass|escape}{/if}" data-pb-section="spec_table"{if $id} id="pb-{$id|escape}"{/if}>
<div class="pb-section__inner pb-spec-table__inner">
{if $title}
<h2 class="pb-heading pb-spec-table__title">{$title|escape}</h2>
{/if}
{if $intro}
<p class="pb-spec-table__intro">{$intro|escape}</p>
{/if}
{if $rows && ($rows | length) > 0}
<div class="pb-spec-table__scroll">
<table class="pb-spec-table__table">
<thead>
<tr>
<th scope="col">{'pagebuilder_fe_spec_param' | lexicon}</th>
<th scope="col">{'pagebuilder_fe_spec_value' | lexicon}</th>
</tr>
</thead>
<tbody>
{foreach $rows as $row}
{if $row._pbGroup}
<tr class="pb-spec-table__row--group">
<th colspan="2" scope="colgroup">{$row.label|default:''|escape}</th>
</tr>
{elseif $row._pb_cells.label.hidden && $row._pb_cells.value.hidden}
<tr class="pb-spec-table__row--span-cont" aria-hidden="true"></tr>
{else}
<tr>
{if !$row._pb_cells.label.hidden}
<th scope="row" colspan="{$row._pb_cells.label.colspan|default:1}" rowspan="{$row._pb_cells.label.rowspan|default:1}">{$row.label|default:''|escape}</th>
{/if}
{if !$row._pb_cells.value.hidden}
<td colspan="{$row._pb_cells.value.colspan|default:1}" rowspan="{$row._pb_cells.value.rowspan|default:1}">{$row.value|default:''|escape}</td>
{/if}
</tr>
{/if}
{/foreach}
</tbody>
</table>
</div>
{else}
<p class="pb-spec-table__empty">{'pagebuilder_fe_spec_empty' | lexicon}</p>
{/if}
</div>
</section>Текст ячеек экранируется (|escape). HTML из редактора на сайте не исполняется.