Фокус глубины: структура каталогов, что можно менять, правила размещения кастомов, запрет /upload/simai
{site_dir}/simai.data/ в SIMAI Framework 4 (SF4) — это проектный слой данных и переопределений, который должен оставаться “живым” и управляемым командой проекта. Логика простая: всё, что относится к конкретному сайту (настройки, шаблоны участков, пользовательские варианты раскладок, ресурсы и т.п.), хранится здесь, а системный слой фреймворка (/simai/) остаётся неизменным и обновляемым.
Что обычно можно и нужно менять в simai.data:
- подключение/настройка ассетов и шрифтов на уровне проекта (через проектные конфиги);
- настройки сайта/разделов/страниц (схемы в
simai.data/config, значения — в*.property.php); - проектные варианты грида (view/block) и их шаблоны;
- включаемые области, модальные окна, изображения и иконки;
- переопределения универсальных свойств (типы/шаблоны) через проектный слой.
Что не рекомендуется делать:
- править системные файлы
/simai/(эти изменения легко потерять при обновлении и сложно сопровождать); - использовать альтернативные “исторические” места хранения вроде
/upload/simaiкак норму проекта. Если в старых проектах такое встречается — это отдельная задача миграции: привести артефакты к{site_dir}/simai.data/и дальше жить в одной канонической схеме.
Ниже — как обычно раскладываются основные каталоги внутри simai.data и что в них хранить.
Каталоги: config, template (style/js/meta/panel/property), include, modal, image, grid (view/block), lang, property overrides
config/ — ассеты (.asset.config.php), шрифты (.font.config.php), настройки site/section/page, property-файлы
{site_dir}/simai.data/config/ — это место, где лежат конфиги-схемы и реестры, по которым SF4 строит формы настроек и подключает проектные пакеты.
Типовой набор файлов, который используется как “опорный” для UI и настройки:
.site.config.php— схема настроек сайта (что показывать в форме настроек сайта)..structure.config.php— схема настроек структуры (раздел/страница)..demo.config.php— схема демо-настроек (если используется демо-режим/демо-панель)..asset.config.php— проектная конфигурация ассетов (CSS/JS/пакеты/порядок подключения)..font.config.php— проектный реестр шрифтов (если проект ведёт список шрифтов как конфиг).- (в поставках/решениях могут встречаться дополнительные схемы под инфоблоки, формы и т.п., например
.iblock*.config.php— это нормальный паттерн расширения схем).
Важно не путать схемы и значения:
- схемы живут в
simai.data/config/*.config.php; - значения настроек — в
{site_dir}/simai.data/.site.property.php(уровень сайта) и в/.property.phpвнутри каталогов разделов (уровень раздела/страницы).
template/ — адаптация шаблона под сайт: style/, js/, meta/, panel/, property/, основной template.php
{site_dir}/simai.data/template/ — проектный слой шаблона, который позволяет “подкрутить” внешний вид и поведение без правки системного шаблона.
На практике в template/ обычно есть набор точек входа, которые SF4 подключает как части шаблона:
style.php— проектные стили/подключения стилей (в т.ч. добавление собственных файлов/пакетов).js.php— проектные скрипты/подключения JS.meta.php— мета/SEO/служебные теги, которые проект добавляет на страницу.panel.php— элементы панели/интерфейсных вставок, связанных с режимами редактирования.property.php— проектные правила/подключения, связанные с property/UI (например, переопределения поведения некоторых полей на уровне шаблона).template.php— основной “проектный” шаблонный слой, который дополняет системный каркас.
Кроме точек входа, в template/ часто живёт разложенная структура “областей” (например, area/...), где в каждой области есть собственный template.php. Это удобно, потому что проект может менять шаблоны шапки/подвала/сайдбара и т.п. независимо и при этом хранить всё в simai.data, не трогая системную часть.
Мини-пример (как это обычно выглядит именно как структура проекта):
{site_dir}/simai.data/template/
template.php
style.php
js.php
meta.php
panel.php
property.php
area/
header/template.php
footer/template.php
sidebar/template.php
main/template.php
grid/ — конфиги view/block для грида; данные — content.json
{site_dir}/simai.data/grid/ — проектная часть системы грида SF4: здесь вы храните варианты раскладок (view) и блоки (block), которые используются в зонах страницы.
Типовая структура:
grid/view/— “как раскладываем” (макеты/представления зон).grid/block/— “что показываем” (наборы блоков для зон).
Обе ветки обычно организованы одинаково: по зонам (header/, footer/, sidebar/, main/, home/), а внутри — по вариантам (например, default/, empty/, а также числовые варианты вроде 005/, 010/ и т.д.).
Внутри конкретного варианта (папки макета/блока) обычно присутствует стандартный набор:
template.php— шаблон реализации;.description.php— описание варианта (для выбора в UI/редакторах);image/— превью/картинки варианта;lang/— языковые строки варианта.
Пример структуры одного варианта:
{site_dir}/simai.data/grid/view/header/005/
template.php
.description.php
image/
lang/
include/, modal/, image/ — включаемые области, модальные окна, изображения/ресурсы; lang/ — языковые файлы; property overrides — переопределения свойств
Это “ресурсные” каталоги, которые делают проект удобным для сопровождения:
{site_dir}/simai.data/include/— включаемые области (типовой сценарий — подключение черезbitrix:main.include). Здесь держат куски HTML/PHP, которые редакторы часто меняют и которые логично хранить рядом с проектными ресурсами.{site_dir}/simai.data/modal/— шаблоны/контент модальных окон, которые проект использует как типовой UI-паттерн.{site_dir}/simai.data/image/— изображения и прочие медиа-ресурсы, которые должны быть “проектными” и переносимыми вместе с конфигами. Рядом часто встречается{site_dir}/simai.data/svg/для иконок/векторных ресурсов (это удобно отделять от растровых картинок).{site_dir}/simai.data/lang/— языковые переопределения проекта (когда проекту нужен свой словарь/переводы поверх системных строк или для проектных шаблонов/вариантов).
Отдельно про property overrides: для универсальных свойств предусмотрен проектный слой:
{site_dir}/simai.data/property/
Он используется модулем simai.property как приоритетное место для переопределения/добавления типов и шаблонов универсальных свойств. Это тот же принцип “ядро не трогаем, проект расширяем”: сначала ищем тип/шаблон в simai.data/property, затем — в системном /simai/property.
Правило: все пользовательские данные/правки хранятся в simai.data; системный /simai не менять
Итоговое правило для проекта на SF4:
- любые кастомы (настройки, UI-варианты грида, включаемые области, модалки, ресурсы, переопределения типов/шаблонов свойств) — в
{site_dir}/simai.data/; - системные файлы SF4 (
/simai/) не правим: обновления должны проходить без ручных конфликтов; - если в наследии проекта встречаются альтернативные каталоги вроде
/upload/simai, лучше считать это “историей” и планировать миграцию вsimai.data, чтобы дальше вся команда жила в одной понятной схеме.
Пример “канонического” дерева simai.data (собрано по смыслу наиболее употребимых частей):
{site_dir}/simai.data/
.site.property.php
config/
.site.config.php
.structure.config.php
.demo.config.php
.asset.config.php
.font.config.php
template/
template.php
style.php
js.php
meta.php
panel.php
property.php
area/...
grid/
view/...
block/...
include/
modal/
image/
svg/
lang/
property/
Что менять безопасно; связи с ядром
Меняем только в {site_dir}/simai.data (config, template, grid, include, modal, lang, image, overrides). Системный /simai и шаблон /bitrix/templates/simai.framework не править — только копировать/расширять в simai.data
Для проекта на SIMAI Framework 4 (SF4) безопасная зона изменений — это слой данных сайта {site_dir}/simai.data. Это правило напрямую вытекает из модели поставки: системное ядро фреймворка живёт в /simai, системный Bitrix-шаблон — в /bitrix/templates/simai.framework, а всё проектное (то, что должно переживать обновления) — в simai.data.
Практический смысл дисциплины простой: любые правки в /simai или в системном шаблоне превращают обновление SF4 в ручное “слияние” изменений. Если изменения лежат в {site_dir}/simai.data, обновление заменит системные артефакты, но ваш проектный слой останется нетронутым.
Отдельно фиксируем норму SF4: вариант хранения проектных артефактов в /upload/simai не используется — все инструкции и доработки должны опираться на {site_dir}/simai.data.
Связи с ядром: ядро подключает ассеты/шаблон, читает конфиги и гриды из simai.data; при обновлениях ядра файлы simai.data остаются, поэтому все доработки держать там
Если смотреть на связку “ядро → проект”, то она устроена как делегирование: системный Bitrix-шаблон отвечает за каркас страницы (точки сборки, подключение частей и ассетов), а проектные расширения подтягиваются из {site_dir}/simai.data/template.
Данные и настройки читаются аналогично “по слоям”: схемы и проектные конфиги лежат в {site_dir}/simai.data/config, значения — в property-файлах (например, .site.property.php и /.property.php в дереве сайта). Отдельный показательный пример — grid_view_*: схема описывает поле как список, а выбранное значение хранится как код активного представления области.
При обновлениях модуля SF4 меняются системные части (ядро /simai, шаблон, компоненты), а стартовый слой данных (simai.data) остаётся проектным и не должен смешиваться с “ядром”. Именно поэтому все кастомизации и должны жить в simai.data.
Безопасные точки: стили/скрипты в simai.data/template, конфиги ассетов/шрифтов, добавление блоков/view в simai.data/grid, включаемые области и модалки
В SF4 заранее предусмотрены “точки расширения”, которые рассчитаны на проектные изменения без форка системного шаблона:
- Подключение своих CSS/JS и служебных вставок — через
{site_dir}/simai.data/template(типовые точки:style.php,js.php,meta.php,panel.php,property.php,template.php). - Проектные настройки ассетов и шрифтов — через
{site_dir}/simai.data/config(чтобы менять подключение централизованно, не редактируя системные пакеты). - Раскладки областей и блоки грида — через
{site_dir}/simai.data/grid/viewи{site_dir}/simai.data/grid/block. Это ключевой механизм: пользователь выбираетviewпо коду (например, для header), а дальше выбранный view подключает набор блоков. - Включаемые области/модалки/ресурсы/языковые переопределения — через соответствующие каталоги в
{site_dir}/simai.data(это проектные артефакты и должны быть переносимыми).
Если вы добавляете новый блок/вариант view, безопасная модель — “копируем или создаём в simai.data, системное не трогаем”. Это прямо закреплено как правило для блоков: системные блоки не правятся, делаются копии/вариации в слое сайта.
Проверять пути по structure.json и аннотации в sf4-structure.enriched.json перед правками
Перед изменениями важно сверяться с каноническим деревом путей SF4 и его аннотациями, чтобы не “угадать” структуру на глаз (особенно в частях grid/view, grid/block и точках подключения шаблона). На уровне практики это означает: вы сначала убеждаетесь, что нужная папка/файл существует в стандартной структуре (или должна появиться в проектном слое), и только затем добавляете туда свои артефакты.
Например, структура поставки для блоков грида ожидает наличие template.php и .description.php в каталоге блока — это видно по дереву стандартной структуры (на примере блоков header).