home chevron_right
Примеры конфигураций и связь с блоками

Готовые примеры строк/колонок и параметровlink

В 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 подключает blocklink

Грид сам по себе «умеет собирать» структуру строк и колонок, но содержимое страницы появляется за счёт того, что в каждой 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.

Паттерны имен и параметров: как формируются ключиlink

Параметры грида в SF4 организованы по устойчивому паттерну имён — это важно и для ручной правки, и для понимания результата визуального редактора.

  1. Структура строк/колонок/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 и похожие — модификаторы для обёрток/области.
  1. Параметры, прокидываемые в конкретный 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 он будет идти с подчёркиванием.

Примеры страниц с готовым гридом: как использовать для обучения и диагностикиlink

В качестве «живых примеров» лучше всего подходят не абстрактные куски, а реальные представления областей, которые уже используются в проекте:

  • 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 в проектеlink

  • Активное представление для области выбрано в свойствах (grid_view_* на нужном уровне: сайт/раздел/страница).
  • Папка view существует и содержит рабочий template.php (без синтаксических ошибок).
  • Все коды *_AREA_*_TEMPLATE, используемые в view, действительно существуют как блоки в simai.data/grid/block/....
  • Если блоку нужны параметры — они объявлены в .parameters.php, а в view заданы ключи ROW_i_COL_j_AREA_k__... (с учётом замены точек на подчёркивания).
  • Режимы редактирования включаются через панель SF4, и при включении «редактирования гридов» вы видите элементы управления на странице.
  • Страница открывается без PHP/JS ошибок.
  • После изменений очищен кэш (в первую очередь кэш компонентов/страниц, если изменения “не подтянулись” сразу).