Что такое VIEW в SF4: сохранённая конфигурация, а не “просто шаблон”
В SIMAI Framework 4 (SF4) VIEW — это сохранённая конфигурация сборки, оформленная как пакет файлов в папке представления. Ключевая идея: VIEW хранит не “кусок вёрстки”, а параметризованный сценарий рендера, который затем может быть загружен и применён повторно.
На практике VIEW реализуется через template.php внутри папки представления. В этом файле обычно находится сохранённый вызов simai:sf.grid в “экспертном” виде: со списком строк/колонок/областей, модификаторами, а также с условной логикой показа элементов. Поэтому VIEW удобно воспринимать как “пресет (preset) сборки области”, а не как статический шаблон.
Отдельно полезно помнить: “область” (header, main/top, sidebar/left и т.д.) — это контекст применения представления (где оно подключается), а внутри template.php может использоваться BLOCK_SECTION (логическая секция блоков), которая не обязана совпадать с именем папки области один в один (например, main/top использует BLOCK_SECTION = main, а sidebar/left — BLOCK_SECTION = sidebar).
Где хранится выбор активных представлений: свойства grid_view_* в .site.property.php и .property.php
Выбор активных VIEW для областей страницы хранится как значения свойств grid_view_* и поддерживает наследование уровней:
- уровень сайта:
{site_dir}/simai.data/.site.property.php - уровень раздела/страницы:
.property.phpв папке раздела (например/ru/.property.php)
В результате один и тот же параметр, например grid_view_header, может быть задан:
- глобально для всего сайта (в
.site.property.php); - переопределён для ветки раздела (в
sectionвнутри.property.php); - переопределён точечно для страницы (в
pageвнутри.property.php).
Пример “значений на сайте” выглядит так:
'grid_view_header' => '005',
'grid_view_footer' => 'default',
'grid_view_main_top' => 'default',
'grid_view_sidebar_left' => 'default',
А на уровне страницы можно переопределить часть областей (включая отключение областей через empty), не меняя поведение всего сайта.
Карта областей и путей: header, footer, home, sidebar/left, sidebar/right, main/top, main/bottom
Представления областей организованы в {site_dir}/simai.data/grid/view по понятной “карте” путей. В SF4 используется следующий маппинг:
grid_view_header→{site_dir}/simai.data/grid/view/header/<view_code>/grid_view_footer→{site_dir}/simai.data/grid/view/footer/<view_code>/grid_view_home→{site_dir}/simai.data/grid/view/home/<view_code>/grid_view_sidebar_left→{site_dir}/simai.data/grid/view/sidebar/left/<view_code>/grid_view_sidebar_right→{site_dir}/simai.data/grid/view/sidebar/right/<view_code>/grid_view_main_top→{site_dir}/simai.data/grid/view/main/top/<view_code>/grid_view_main_bottom→{site_dir}/simai.data/grid/view/main/bottom/<view_code>/
Таким образом, выбор кода (например default, 01, 005, empty) напрямую определяет, какая папка будет загружена для соответствующей области.
Структура view-папки: template.php, .description.php, lang, image/preview.png
Каждое представление — это папка {.../<view_code>/} с набором файлов “пакета”. Минимальная практическая структура выглядит так:
template.php— главный файл: содержит конфигурацию (как правило, вызовsimai:sf.gridс параметрами)..description.php— метаданные представления для интерфейсов выбора (имя, описание, сортировка, версия и т.п.).lang/<lang>/...— локализация имени/описания (если используется).image/preview.png— превью (если оно предусмотрено для выбора макета “по картинке”).
Важно для UX: некоторые области (например header/footer) могут показываться в настройках с превью-картинками, если у представлений есть image/preview.png. Для других областей выбор может быть “обычным списком” по названиям/кодам — это зависит от схемы настроек (какой контрол используется для параметра grid_view_*).
Отдельный полезный паттерн в проектах — иметь представление empty, которое намеренно “ничего не выводит”. Такое VIEW удобно использовать, когда нужно отключить область на конкретной странице или в конкретной ветке.
Условный рендер во view: *_USE_CONDITION и *_CONDITION_PROPERTY
Одно из ключевых отличий VIEW в SF4 — возможность условного рендера прямо на уровне конфигурации представления. В “экспертной” конфигурации грида отдельные строки (а иногда и элементы внутри строк) могут включаться/выключаться на основе значений свойств.
Типовой паттерн выглядит так:
ROW_<id>_USE_CONDITION = Y— включить проверку условия;ROW_<id>_CONDITION_PROPERTY— имя свойства, по которому проверяем;ROW_<id>_CONDITION_COMPARISON— операция сравнения (например==);ROW_<id>_CONDITION_VALUE— ожидаемое значение.
Пример (смысловой, в вашем стиле конфигурации): строка будет показана только если свойство show_title равно Y:
"ROW_1_USE_CONDITION" => "Y",
"ROW_1_CONDITION_PROPERTY" => "show_title",
"ROW_1_CONDITION_COMPARISON" => "==",
"ROW_1_CONDITION_VALUE" => "Y",
Это позволяет делать представления “умными”: одна и та же конфигурация может адаптироваться под настройки сайта/раздела/страницы (например, показывать/скрывать заголовок, хлебные крошки, баннеры, include-области), не требуя создавать отдельный VIEW под каждый вариант.