home chevron_right
Слой данных `{site_dir}/simai.data`

config/ — конфигурации ассетов, шрифтов и схемы настроекlink

Каталог config/ в simai.data отвечает не за “значения настроек”, а за описание того, какие настройки вообще существуют и как их показывать/редактировать в интерфейсе SF4. На практике это два слоя:

  1. Схема (конфиг) — какие опции есть, их типы (строка/чекбокс/список/файл), дефолты, условия показа, шаблоны отображения в UI.
  2. Значения (property-файлы) — конкретные выбранные значения для сайта/раздела/страницы (см. отдельный подраздел про наследование).

Типовой пример схемы настройки (site-уровень): параметр выбора представления области grid_view_header — это список значений, который строится из папки с view, причём если у view есть превью, оно используется в интерфейсе выбора.

'grid_view_header' => [
    'name' => Loc::getMessage("GRID_VIEW_HEADER"),
    'type' => 'list',
    'values' => \SIMAI\Main\Block\Section::getImageList(SF_DATA_DIR . "/grid/view/header"),
    'default' => 'default',
    'template' => 'sf4.image.list',
],

Отдельно в config/ может присутствовать .iblock.config.php — конфигурация вкладок/полей для форм редактирования инфоблоков (в том числе для публичного/расширенного редактирования). Это не значения, а именно “схема формы”: какие поля показывать и как их группировать.

template/ — проектная адаптация шаблонаlink

template/ — это основная точка проектной кастомизации. Смысл простой: системный шаблон Bitrix остаётся стабильным и обновляемым, а проектные правки (layout, области, подключение кастомных стилей/скриптов, панели и режимы) живут в simai.data.

Ключевой файл — {site_dir}/simai.data/template/template.php: он становится “центром сборки страницы” на проекте и уже внутри подключает области, панели, свойства, стили, скрипты.

Типовые части, которые обычно живут рядом:

  • meta/ — мета-разметка (title/description/OG и т.п.)
  • style/ и js/ — проектные ресурсы
  • panel/ — элементы/шаблоны панели управления SF4 на сайте
  • property/ — проектные шаблоны/переопределения вывода свойств (если используется такой подход в проекте)
  • вспомогательные файлы вроде panel.php, property.php, style.php, js.php — как “точки подключения” к загрузчику/панели/настройкам

Главный принцип: ничего из системного шаблона не правится напрямую — все изменения делаются через simai.data/template.

grid/ — представления (view) и блоки (block)link

grid/ — это место, где хранится “конструктор страницы” SF4:

  • grid/view/...представления областей (header/footer/sidebar/main/top…)
  • grid/block/...блоки, из которых собираются области и контент

Важно зафиксировать ваш актуальный смысл термина view: в SF4 VIEW — это сохранённая конфигурация (набор параметров), а не “просто шаблон”. В текущей реализации это часто выглядит как готовый template.php внутри view-папки, который содержит полный вызов simai:sf.grid со всеми параметрами (а в более новых версиях — движение к раздельному сохранению по сущностям: страница/строка/блок).

Пример фрагмента view (область header) — внутри template.php вызывается simai:sf.grid, а структура области описывается параметрами ROW_*, COL_*, AREA_*:

$APPLICATION->IncludeComponent(
    "simai:sf.grid",
    ".default",
    [
        "BLOCK_SECTION" => "header",
        "ROW_COUNT" => "5",
        "ROW_3_NAME" => "Меню",
        "ROW_3_COL_0_AREA_0_TEMPLATE" => "menu.main",
        // ...
    ]
);

То есть grid/view — это “пресеты сборки областей”, а grid/block — “кирпичи”, которые вставляются в AREA_*_TEMPLATE.

include/, modal/, lang/, image/ и overrides свойствlink

Эти каталоги — “инфраструктура проекта”, которая обычно ездит вместе с решением между средами:

  • include/ — подключаемые области/фрагменты (в том числе для шаблона и блоков)
  • modal/ — модальные окна (шаблоны/контент модалок)
  • lang/ — проектные языковые файлы (для шаблона, view, блоков, панелей)
  • image/ — изображения проекта и служебные заглушки/превью (включая превью для выбора view в настройках)
  • overrides свойств — проектные переопределения шаблонов/поведения свойств (в зависимости от принятой структуры проекта это может быть simai.data/property и/или simai.data/template/property)

Здесь важно не “раздуть” слой сайта случайными файлами: в simai.data имеет смысл хранить только то, что реально является артефактами решения и должно переноситься между dev/stage/prod.

Правило проекта: все правки и данные — в simai.data, ядро и системный шаблон не трогаютсяlink

Это правило удобно формулировать как контракт разработки:

  • ядро SF4 и системный шаблон можно обновлять

  • проектная логика/верстка/настройки не должны ломаться от обновлений

  • поэтому всё, что относится к проекту, живёт в {site_dir}/simai.data:

    • настройки (значения) — в .site.property.php и .property.php
    • схемы настроек (что можно редактировать) — в config/*.config.php
    • сборка областей — в grid/view
    • проектные блоки — в grid/block
    • проектный layout/панели/ресурсы — в template/*

Что важно учесть на практике в config/, template/ и grid/view|blocklink

1) config/ — это не “где хранятся значения”, а “что вообще настраивается”. Значения лежат отдельными property-файлами. Поэтому когда “не находится настройка” — часто проблема не в значениях, а в том, что нужный параметр не объявлен в конфиге, и UI его просто не показывает.

2) template/ — это место, где включаются режимы SF4 (в том числе редактирование). У вас включение режима редактирования и режима редактирования гридов идёт через панель SF4 на сайте: сначала включается общий режим редактирования, после чего становится доступной кнопка режима редактирования гридов.

3) В grid/view и grid/block лежат не только “конфиги”, но и PHP-шаблоны. Минимальная структура view-папки в проекте выглядит так:

  • template.php — реализация (часто полный вызов simai:sf.grid с параметрами)
  • .description.php — метаданные (имя/описание/сортировка/версия/превью)
  • lang/ru/.description.php — локализация метаданных
  • image/preview.png — превью (опционально; если нет — в UI можно показывать списком)

А минимальная структура блока (пример custom.button) выглядит так:

  • template.php — вывод HTML
  • .parameters.php — список параметров блока и дефолты
  • .description.php — метаданные (если используется)

Пример того, как блок берёт параметры (ключи формируются из кода папки блока, приведённого к верхнему регистру):

<?php
$nameTemplate = strtoupper(basename(__DIR__));

?>
<a class="<?= $arBlockProperty[$nameTemplate . "__BUTTON_MODIFIER"] ?>"
   href="<?= $arBlockProperty[$nameTemplate . "__BUTTON_LINK"] ?>"
   target="<?= $arBlockProperty[$nameTemplate . "__BUTTON_TARGET__BLANK"] === "Y" ? "_blank" : "_self" ?>">
    <?= htmlspecialcharsBack($arBlockProperty[$nameTemplate . "__BUTTON_TEXT"]) ?>
</a>