home chevron_right
Представления областей: `grid_view_*` и структура `{site_dir}/simai.data/grid/view`

Что такое VIEW в SF4: сохранённая конфигурация, а не “просто шаблон”link

В 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/leftBLOCK_SECTION = sidebar).

Где хранится выбор активных представлений: свойства grid_view_* в .site.property.php и .property.phplink

Выбор активных 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/bottomlink

Представления областей организованы в {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.pnglink

Каждое представление — это папка {.../<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_PROPERTYlink

Одно из ключевых отличий 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 под каждый вариант.