Фронтенд, конфиги, блоки/гриды: {site_dir}/simai.data
В SF4 слой {site_dir}/simai.data — это “место, где живёт проект”. Всё, что относится к оформлению, структуре вывода, настройкам и “контентным шаблонам”, должно находиться именно здесь, потому что этот слой:
- не перезаписывается при обновлении ядра SF4,
- удобно переносится между окружениями,
- и является основной публичной точкой расширения, на которую рассчитана архитектура SF4.
Практически по типам данных это выглядит так:
-
template/— проектная кастомизация шаблона:template.php— основной файл, который собирает страницуarea/— include-области (подключаются черезIncludeArea::includeTemplateArea())panel/— элементы панели (в вашем проектеpanel.phpдобавляет кнопки в админ-панель)property/— установка/подготовка свойств страницы (в вашем проектеproperty.phpзадаёт значения свойств, на которых строится страница)style/иjs/— проектные стили и скриптыmeta/— метаданные/обвязка<head>(если выделено в структуре шаблона)
-
config/— конфиги проекта:- настройки site/section/page через property-файлы
- сервисные конфиги (например, ассеты/шрифты, если они предусмотрены проектной структурой)
-
grid/— проектные вьюхи и блоки:- добавление новых вариантов
- override существующих системных шаблонов через слой данных сайта
-
include/,modal/,lang/,image/— вспомогательные проектные данные:- включаемые области (в другом формате, не “area”)
- модальные окна/шаблоны модалок
- языковые файлы и ресурсы
- изображения и статические материалы
-
property overrides — слой переопределений свойств (если в проекте используется отдельная схема override, она также относится к данным сайта и должна жить в
simai.data).
Ключевой принцип: если доработка выражается файлами шаблона/конфигом/шаблоном блока/ресурсом — она должна лежать в simai.data.
Бэкенд-расширения: оформлять в отдельные модули, не правя ядро simai.framework
Когда доработка — это не “шаблон и конфиг”, а новая бизнес-логика (сущности, события, сервисы, API, админ-страницы, интеграции), правильная стратегия — делать это как отдельный модуль.
Почему так лучше:
- ядро
simai.frameworkобновляется через сервер обновлений и должно оставаться “чистым”; - модуль проще версионировать, тестировать и переносить;
- модуль можно включать/выключать, обновлять отдельно и поддерживать совместимость на уровне зависимостей.
Типовой подход для модуля-расширения:
- собственное пространство имён (чтобы не пересекаться с
SIMAI\Main\...); - свои классы и обработчики событий;
- если нужно — свои компоненты и админ-страницы;
- использование D7 API Bitrix как базовой платформы.
Важно: если вам нужно “переопределить поведение SF4”, делайте это не правкой классов ядра, а через:
- события/обработчики Bitrix (если точка расширения есть),
- проектный слой
simai.data(если это UI/шаблоны/конфиги), - модуль, который добавляет свою функциональность рядом (если это логика).
Всегда использовать коды и чистые пути; перед добавлениями сверять структуру
Независимо от того, где вы храните доработку (в simai.data или модулем), два правила одинаково критичны:
-
Коды и пути — “чистые”: латиница, без пробелов/кириллицы, предсказуемые разделители (
_/-), без “магических” символов. Это уменьшает риск ошибок путей и делает проект переносимым. -
Доработка кладётся в правильное место структуры. В SF4 многие механизмы ищут файлы по соглашению. Если файл лежит “почти там”, он просто не будет найден, и проблема будет выглядеть как “SF4 не подключает”.
Практический мини-чек перед коммитом:
- Понимаю тип сущности (область, блок, вьюха, конфиг, модульная логика)?
- Положил в корректный слой (
simai.dataили модуль)? - Имя/код читаемое и переносимое?
- Подключение делаю через публичный механизм SF4 (IncludeArea / Block\Section / шаблон), а не через правку системных файлов?