Фокус глубины: состав модулей, границы публичного API vs внутренностей, зависимости, что расширять без форка
В SIMAI Framework 4 (SF4) “ядро” — это, по сути, связка Bitrix-модулей и системного runtime-слоя, которые вместе дают: компоненты, мастера, загрузку ассетов, конфигурации и набор библиотечных классов. Проектная часть (то, что меняется на конкретном сайте) вынесена в слой данных сайта и подключается без правки поставки.
Практическая граница между “API” и “внутренностями” в SF4 проходит по тому, что предназначено для прямого использования в проекте и что является инфраструктурой поставки:
-
Публичный слой API (на него можно опираться в проекте):
- библиотека классов
SIMAI\Main\…(конфигурации, ассеты, include-области, работа с блоками/редактированием); - контракт слоя данных сайта
{site_dir}/simai.data(шаблон, области, grid, конфиги сайта/разделов/страниц); - подключение областей через
\SIMAI\Main\IO\IncludeArea::includeTemplateArea(...).
- библиотека классов
-
Внутренний слой (лучше не расширять “в обход” правил):
- системные каталоги SF4 (runtime и системные конфиги/ассеты), которые обновляются вместе с поставкой;
- действия мастера (actions) как инфраструктура: их можно использовать, но нежелательно “вшивать” проектную бизнес-логику в конкретные внутренние реализации.
Ключевой принцип совместимости без форка такой: не менять поставочные части SF4, а расширять через:
{site_dir}/simai.data(шаблон/области/представления/конфиги),- собственные модули (если расширение выходит за рамки шаблона и данных).