home chevron_right
Данные сайта (simai.data)

Фокус глубины: структура каталогов, что можно менять, правила размещения кастомов, запрет /upload/simailink

{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 overrideslink

config/ — ассеты (.asset.config.php), шрифты (.font.config.php), настройки site/section/page, property-файлыlink

{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.phplink

{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.jsonlink

{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 — переопределения свойствlink

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

  • {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 не менятьlink

Итоговое правило для проекта на 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/

Что менять безопасно; связи с ядромlink

Меняем только в {site_dir}/simai.data (config, template, grid, include, modal, lang, image, overrides). Системный /simai и шаблон /bitrix/templates/simai.framework не править — только копировать/расширять в simai.datalink

Для проекта на 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 остаются, поэтому все доработки держать тамlink

Если смотреть на связку “ядро → проект”, то она устроена как делегирование: системный 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, включаемые области и модалкиlink

В 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 перед правкамиlink

Перед изменениями важно сверяться с каноническим деревом путей SF4 и его аннотациями, чтобы не “угадать” структуру на глаз (особенно в частях grid/view, grid/block и точках подключения шаблона). На уровне практики это означает: вы сначала убеждаетесь, что нужная папка/файл существует в стандартной структуре (или должна появиться в проектном слое), и только затем добавляете туда свои артефакты.

Например, структура поставки для блоков грида ожидает наличие template.php и .description.php в каталоге блока — это видно по дереву стандартной структуры (на примере блоков header).