Site-уровень: {site_dir}/simai.data/.site.property.php
На уровне сайта SF4 разделяет две вещи: схему настроек (какие параметры вообще существуют и как выглядят в интерфейсе) и значения настроек (что реально выбрано для этого сайта).
-
Схема настроек сайта задаётся в
{site_dir}/simai.data/config/.site.config.php. Этот файл описывает группы настроек и параметры (name,type,values,default,template) — то есть определяет “какие настройки доступны” и “каким контролом они редактируются”. -
Значения настроек сайта хранятся в
{site_dir}/simai.data/.site.property.php. Это фактические выбранные значения, которые применяются при сборке страниц.
Ключевой пример site-уровня — выбор представлений областей страницы через свойства grid_view_*. В .site.config.php такие параметры обычно описываются как списки, а варианты формируются автоматически из папок представлений в simai.data/grid/view/.... Например, для шапки:
'grid_view_header' => array(
'name' => Loc::getMessage("GRID_VIEW_HEADER"),
'type' => 'list',
'values' => \SIMAI\Main\Block\Section::getImageList(SF_DATA_DIR . "/grid/view/header"),
'default' => 'default',
'template' => 'sf4.image.list',
),
А в .site.property.php хранится уже выбранный код представления, например:
'grid_view_header' => '005',
Такой подход делает настройку “макетов областей” полностью файловой и переносимой: достаточно иметь папки представлений и значения grid_view_*.
Section/Page-уровень: .property.php в папках разделов (пример /ru/.property.php)
Для разделов и страниц у вас также есть разделение на схему и значения, но схема задаётся отдельным конфигом структуры.
-
Схема настроек структуры (раздел/страница) задаётся в
{site_dir}/simai.data/config/.structure.config.php. Этот конфиг определяет, какие параметры можно настраивать на уровне разделов и страниц и как они будут выглядеть в UI. -
Локальная схема для ветки может лежать прямо в разделе сайта как
{section_dir}/.structure.config.php. При открытии настроек раздела/страницы SF4 объединяет базовую схему и локальную, причём локальная схема имеет приоритет и переопределяет базовую по совпадающим ключам. Это позволяет давать разным веткам сайта разные наборы опций и разные дефолты, не меняя общий стандарт. -
Значения разделов и страниц хранятся в
.property.phpв каталоге раздела (например/ru/.property.php). Этот файл обычно содержит две зоны:section— значения для раздела и всех вложенных разделов (по наследованию),page— значения для конкретных страниц (по имени файла), которые переопределяют section и site.
Пример структуры .property.php:
<?php
return array(
'page' => array(
'index.php' => array(
'show_title' => 'N',
'show_breadcrumb' => 'N',
'body_theme' => 'theme-light',
'grid_view_header' => 'default',
),
),
'section' => array(
'title' => '',
'title_browser' => '',
),
);
Практически это означает: одно и то же свойство (например grid_view_header) можно держать “по умолчанию” на уровне сайта и точечно переопределять на отдельных страницах, если нужен иной макет областей.
Приоритет переопределения: page → section → site
Итоговое значение каждого параметра в SF4 выбирается по строгому приоритету:
- page — настройки конкретной страницы (секция
pageв.property.phpтекущего раздела), - section — настройки раздела (секция
sectionв.property.php, с наследованием от родительских разделов), - site — глобальные настройки сайта (
{site_dir}/simai.data/.site.property.php).
Такое наследование позволяет строить сайт как систему “дефолтов”: на уровне сайта задаются базовые решения, разделы корректируют общие правила для ветки, а страницы при необходимости точечно меняют поведение.
User-уровень: настройки через URL и хранение в сессии
User-уровень в вашей модели — это временные пользовательские настройки, которые задаются через URL и сохраняются в сессии браузера. Это слой, который влияет на отображение и инструменты, но обычно не фиксируется как постоянная конфигурация сайта.
Типичный пример user-уровня — режимы редактирования. В SF4 пользователь через панель управления:
- включает общий режим редактирования,
- затем включает режим редактирования гридов.
В этом режиме, например, представления (view) могут менять поведение вывода служебных элементов (через параметр HIDE_ICONS), чтобы было удобно править конфигурацию и диагностировать сборку областей.