Готовые примеры строк/колонок и параметров
В SF4 «пример конфигурации грида» — это не абстрактная схема, а готовая сохранённая конфигурация представления (view), которая в итоге сводится к PHP-вызову компонента simai:sf.grid с параметрами строк, колонок и областей (area).
Практически такие примеры находятся прямо в структуре проекта как набор готовых представлений областей страницы. Типовой формат — папка view с файлами template.php и описанием. Например, для шапки (header) в поставке встречаются варианты-коды вроде default, empty и числовые пресеты (005, 010, 020, 030, 040) — это разные сохранённые конфигурации одной и той же области. Для футера (footer) аналогично есть default, empty и числовые варианты (010, 020, 030). Для других областей структура может включать дополнительный уровень (например main/top/<code>, main/bottom/<code>, sidebar/left/<code>, sidebar/right/<code>), но смысл один: каждый вариант = отдельная сохранённая конфигурация.
Внутри template.php вы увидите те же «строительные блоки», которые генерирует визуальный редактор:
- глобальные параметры компонента (
BLOCK_SECTION,EXPERT_MODEи т.п.); - количество строк (
ROW_COUNT) и порядок строк (ROW_ORDER); - параметры строк (
ROW_0_*,ROW_1_*…); - параметры колонок (
ROW_0_COL_0_*…); - список областей в колонке и выбор шаблонов областей (
ROW_0_COL_0_AREA_0_TEMPLATE…).
Мини-фрагмент (как это обычно выглядит в view):
$APPLICATION->IncludeComponent(
"simai:sf.grid",
".default",
[
"BLOCK_SECTION" => "header",
"EXPERT_MODE" => "Y",
"ROW_COUNT" => "7",
"ROW_ORDER" => "0,1,2,3,4,5",
"ROW_2_COL_1_AREA_0_TEMPLATE" => "org.address",
]
);
Важно: это и есть «готовый пример конфигурации». Он одновременно является источником правды для отображения области и удобным учебным примером того, как устроены параметры грида.
Связка с блоками: как view подключает block
Грид сам по себе «умеет собирать» структуру строк и колонок, но содержимое страницы появляется за счёт того, что в каждой area выбирается код шаблона области:
"ROW_2_COL_1_AREA_0_TEMPLATE" => "org.address",
Этот код соответствует папке блока в {site_dir}/simai.data/grid/block/.... Концептуально связка такая:
- view отвечает за композицию (где и что стоит, сколько колонок, какие area-шаблоны включены);
- block отвечает за конкретный вывод (HTML/PHP конкретного элемента: адрес, меню, кнопка, список и т.д.).
Когда simai:sf.grid собирает результат, он берёт значение *_AREA_*_TEMPLATE (например org.address), находит соответствующую папку блока и подключает template.php этого блока.
На практике блок обычно состоит минимум из:
template.php— вывод;.parameters.php— описание параметров блока (чтобы редактор и view могли задавать значения);.description.phpиlang/...— имя/описание для интерфейсов.
Пример блока org.address (укороченно, но по сути):
use SIMAI\Main\Configuration\Property;
$nameTemplate = strtoupper(basename(__DIR__));
<i class="<?=$arBlockProperty[$nameTemplate . "__ICON_MODIFIER"]?>"></i>
<span class="<?=$arBlockProperty[$nameTemplate . "__TEXT_MODIFIER"]?>">
<?=Property::getValue(SF_SITE_DIR, 'organization_address');?>
</span>
То есть блок получает параметры через массив $arBlockProperty и решает только задачу «как отрендерить». А то, в каком месте он находится и в каких условиях показывается — это уже часть конфигурации view.
Паттерны имен и параметров: как формируются ключи
Параметры грида в SF4 организованы по устойчивому паттерну имён — это важно и для ручной правки, и для понимания результата визуального редактора.
- Структура строк/колонок/area
ROW_COUNT— сколько строк.ROW_ORDER— порядок строк (поддержка drag&drop).ROW_{i}_...— параметры строкиi(активность, модификаторы, настройки контейнера/фона/условий и т.д.).ROW_{i}_COL_COUNT— сколько колонок в строке.ROW_{i}_COL_{j}_...— параметры колонкиjв строкеi(ширины по брейкпоинтам, модификаторы, количество областей).ROW_{i}_COL_{j}_AREA_COUNT— сколько областей (area) в колонке.ROW_{i}_COL_{j}_AREA_{k}_TEMPLATE— код area-шаблона (по сути — код блока).ROW_{i}_COL_{j}_AREA_{k}_MODIFIERи похожие — модификаторы для обёрток/области.
- Параметры, прокидываемые в конкретный block/area-шаблон
Параметры блока объявляются в .parameters.php блока и затем прокидываются через параметры компонента simai:sf.grid с префиксом адресации area-слота. Механика выглядит так:
- блок объявляет параметры, например
ORG.ADDRESS__ICON_MODIFIER,ORG.ADDRESS__TEXT_MODIFIER; - в view они задаются как параметры конкретного area-слота.
Ключевой нюанс SF4: при прокидывании параметров точки в кодах параметров заменяются на подчёркивания (это сделано для совместимости параметров компонента). Поэтому в view вы увидите ключи вроде:
"ROW_2_COL_1_AREA_0__ORG_ADDRESS__ICON_MODIFIER" => "far fa-fw fa-map-marker-alt mr-2 c-primary",
"ROW_2_COL_1_AREA_0__ORG_ADDRESS__TEXT_MODIFIER" => "c-text-primary",
А сам компонент при сборке блока делает преобразование “. → _” и достаёт значение по ключу ROW_i_COL_j_AREA_k__{param}.
Практический вывод для разработчика: если вы видите в .parameters.php параметр с точкой в коде — в параметрах view он будет идти с подчёркиванием.
Примеры страниц с готовым гридом: как использовать для обучения и диагностики
В качестве «живых примеров» лучше всего подходят не абстрактные куски, а реальные представления областей, которые уже используются в проекте:
grid_view_*(в.site.property.php/.property.php) показывает, какой код view выбран для области;- соответствующая папка
simai.data/grid/view/.../<code>/template.phpпоказывает, какая именно конфигурация сейчас рендерится.
Это удобный способ быстро разобраться:
- какие строки/колонки реально используются;
- какие блоки подключены (по
*_AREA_*_TEMPLATE); - какие параметры прокинуты в блоки (по
__...__ключам); - какие условия включены (например
*_USE_CONDITION+*_CONDITION_PROPERTY).
Для команды это ещё и диагностический инструмент: если «не тот блок» или «не те параметры» — вы почти всегда найдёте причину прямо в активном view.
Чек-лист готовности: grid/view/block в проекте
- Активное представление для области выбрано в свойствах (
grid_view_*на нужном уровне: сайт/раздел/страница). - Папка view существует и содержит рабочий
template.php(без синтаксических ошибок). - Все коды
*_AREA_*_TEMPLATE, используемые в view, действительно существуют как блоки вsimai.data/grid/block/.... - Если блоку нужны параметры — они объявлены в
.parameters.php, а в view заданы ключиROW_i_COL_j_AREA_k__...(с учётом замены точек на подчёркивания). - Режимы редактирования включаются через панель SF4, и при включении «редактирования гридов» вы видите элементы управления на странице.
- Страница открывается без PHP/JS ошибок.
- После изменений очищен кэш (в первую очередь кэш компонентов/страниц, если изменения “не подтянулись” сразу).