Подготовить ссылки на примеры конфигураций
Чтобы в документации быстро «прыгать» к нужному примеру, удобно завести постоянные якоря на ключевые части страницы про грид и ссылаться на них из соседних разделов (настройки, view, блоки, визуальный редактор).
Рекомендуемый набор ссылок:
- Шаблон вызова компонента (скелет
IncludeComponent+ куда класть плоские ключи) — раздел «Шаблон вывода». - Мини-пример (показывает, как выглядят
ROW_* / COL_* / AREA_*, массивы и пр.) — раздел «Мини-пример». - Маппинг ключей в
$arParams(правила именования) — раздел «Жёсткие правила маппинга →$arParams». - Валидация (контроль ширин/счётчиков/типов значений) — раздел «Валидация перед выводом».
Если хотите, чтобы ссылки были стабильными независимо от генерации slug’ов, можно прямо в заголовки добавить HTML-якоря, например:
### <a id="sf-grid-php-template"></a>Шаблон вывода
### <a id="sf-grid-mini-example"></a>Мини-пример
### <a id="sf-grid-mapping"></a>Жёсткие правила маппинга → `$arParams`
### <a id="sf-grid-validation"></a>Валидация перед выводом
Тогда ссылки будут простыми и не зависят от движка документации: #sf-grid-mini-example, #sf-grid-mapping и т.д.
Использовать паттерны имен как таблицу с пояснениями
Ниже — компактная «таблица-памятка», которую удобно вставлять в документацию рядом с описанием view/редактора. Она объясняет как читаются параметры и какие ключи за что отвечают.
| Паттерн ключа | За что отвечает | Примечания по значению |
|---|---|---|
BLOCK_SECTION |
Какая область страницы собирается (header/footer/home/main/sidebar) |
Строка. Управляет тем, какие блоки доступны в области. |
ROW_COUNT |
Количество строк | Строка-число ("0", "1", "2"…). |
ROW_ORDER |
Порядок строк (drag&drop) | Строка индексов, напр. "6,0,1,2,3,4,5". |
EXPERT_MODE |
«Экспертный режим» (показывать расширенные настройки) | 'Y'/'N'. |
ROW_{i}_NAME |
Название строки (для UI/редактора) | Строка. |
ROW_{i}_ACTIVE |
Включена ли строка | 'Y'/'N'. |
ROW_{i}_FULLWIDTH |
Растягивание строки на всю ширину | 'Y'/'N'. |
ROW_{i}_USE_CONTAINER |
Использовать контейнер внутри строки | 'Y'/'N'. |
ROW_{i}_COL_COUNT |
Количество колонок в строке | Строка-число. |
ROW_{i}_USE_CONDITION |
Включить условие показа строки | 'Y'/'N'. |
ROW_{i}_CONDITION_PROPERTY / _COMPARISON / _VALUE |
Правило условия показа строки | Используется только если включено условие. |
ROW_{i}_COL_{j}_ADAPTIVE |
Адаптивность колонки | 'Y'/'N' (не форсировать Y «по умолчанию»). |
ROW_{i}_COL_{j}_AREA_COUNT |
Количество area-слотов (блоков) в колонке | Строка-число. |
ROW_{i}_COL_{j}_AREA_{k}_TEMPLATE |
Код блока, который рендерится в area-слоте | Должен существовать в текущем BLOCK_SECTION. |
ROW_{i}_COL_{j}_AREA_{k}_MODIFIER |
Модификаторы (CSS-классы) area-слота | Строка. |
ROW_{i}_COL_{j}_AREA_{k}__{BLOCK}__{PARAM} |
Параметр конкретного блока | {BLOCK} — это код блока, приведённый к верхнему регистру, где . заменён на _. |
ROW_{i}_COL_{j}_AREA_{k}__{BLOCK}_{SERIES}_COUNT + ..._{CODE}_{n}/..._{VALUE}_{n} |
«Серийные параметры» (наборы значений) | Встречается в блоках, где количество параметров задаётся счётчиком. |
Отдельное правило типизации (его тоже удобно вставить в виде маленькой памятки рядом с таблицей):
- bool →
'Y'/'N' - числа → строки
- multiple-значения → PHP-массив
Вставлять выдержки и формат параметров
Базовый «скелет» вызова компонента (как сниппет для документации) удобно держать отдельным блоком — его вставляют в Quick Start, в раздел про view и в раздел про диагностику.
<?php
declare(strict_types=1);
$APPLICATION->IncludeComponent(
'simai:sf.grid',
'.default',
[
// Плоские ключи параметров:
'BLOCK_SECTION' => 'header',
'ROW_COUNT' => '…',
// … все ROW_*/COL_*/AREA_* и глобальные ключи
],
false,
[
// Типичный приём для UI: скрывать иконки, если не включён режим редактирования
'HIDE_ICONS' => (Property::getValue(SF_SITE_DIR, 'grid_edit_mode') === 'Y' ? 'N' : 'Y'),
]
);
К этому сниппету обычно добавляют 2–3 строки пояснения прямо в тексте:
BLOCK_SECTIONзадаёт «контекст» области страницы (шапка/подвал/…).ROW_COUNT+ семействоROW_* / COL_* / AREA_*описывают структуру и содержимое.- Доп.параметры вызова (
HIDE_ICONS) используются, чтобы поведение страницы менялось в зависимости от режима редактирования.
При вставке кода — фрагменты формата параметров и примеры блоков
Ниже — показательный фрагмент реального view, где одновременно видны:
- multiple-параметр (массив соцсетей),
- серийные параметры (счётчик +
CODE_n / VALUE_n), - «обычные» параметры блока.
Пример того, как это выглядит в {site_dir}/simai.data/grid/view/header/005/template.php (сокращено до смысловой части):
$APPLICATION->IncludeComponent(
'simai:sf.grid',
'.default',
[
'BLOCK_SECTION' => 'header',
// multiple-параметр (массив)
'ROW_4_COL_1_AREA_0_TEMPLATE' => 'social.share',
'ROW_4_COL_1_AREA_0__SOCIAL_SHARE__SOCIAL' => [
'facebook',
'twitter',
'vkontakte',
'odnoklassniki',
'print',
],
// обычные параметры блока
'ROW_0_COL_0_AREA_0_TEMPLATE' => 'banner.single',
'ROW_0_COL_0_AREA_0__BANNER_SINGLE__SECTION_CODE' => 'header',
'ROW_0_COL_0_AREA_0__BANNER_SINGLE__USE_FILTER' => 'Y',
// серийные параметры (счётчик + CODE_n/VALUE_n)
'ROW_0_COL_0_AREA_0__BANNER_SINGLE_FILTER_COUNT' => '1',
'ROW_0_COL_0_AREA_0__BANNER_SINGLE_CODE_0' => 'PROPERTY_MAIN',
'ROW_0_COL_0_AREA_0__BANNER_SINGLE_VALUE_0' => 'false',
]
);
Чтобы у читателя не было «магии» вокруг серийных параметров, полезно рядом вставлять короткий фрагмент логики из .parameters.php блока (он объясняет, почему появляются *_FILTER_COUNT, *_CODE_0, *_VALUE_0):
if ($arCurrentValues[$tmpCode . '__USE_FILTER'] == 'Y')
{
$params[$nameTemplate . '_FILTER_COUNT'] = [
'TYPE' => 'LIST',
'VALUES' => [1 => 1, 2 => 2, 3 => 3, 4 => 4],
'DEFAULT' => '1',
'REFRESH' => 'Y',
];
for ($i = 0; $i < $arCurrentValues[$tmpCode . '_FILTER_COUNT']; $i++)
{
$params[$nameTemplate . '_CODE_' . $i] = [ 'TYPE' => 'STRING', 'DEFAULT' => 'PROPERTY_MAIN' ];
$params[$nameTemplate . '_VALUE_' . $i] = [ 'TYPE' => 'STRING', 'DEFAULT' => 'false' ];
}
}
Эти два сниппета вместе хорошо закрывают типовой вопрос читателя: «Откуда взялись такие ключи в view и как понять, какие ещё бывают?».