home chevron_right
Настройки и наследование: site/section/page/user

Site-уровень: {site_dir}/simai.data/.site.property.phplink

На уровне сайта SF4 разделяет две вещи: схему настроек (какие параметры вообще существуют и как выглядят в интерфейсе) и значения настроек (что реально выбрано для этого сайта).

  1. Схема настроек сайта задаётся в {site_dir}/simai.data/config/.site.config.php. Этот файл описывает группы настроек и параметры (name, type, values, default, template) — то есть определяет “какие настройки доступны” и “каким контролом они редактируются”.

  2. Значения настроек сайта хранятся в {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)link

Для разделов и страниц у вас также есть разделение на схему и значения, но схема задаётся отдельным конфигом структуры.

  1. Схема настроек структуры (раздел/страница) задаётся в {site_dir}/simai.data/config/.structure.config.php. Этот конфиг определяет, какие параметры можно настраивать на уровне разделов и страниц и как они будут выглядеть в UI.

  2. Локальная схема для ветки может лежать прямо в разделе сайта как {section_dir}/.structure.config.php. При открытии настроек раздела/страницы SF4 объединяет базовую схему и локальную, причём локальная схема имеет приоритет и переопределяет базовую по совпадающим ключам. Это позволяет давать разным веткам сайта разные наборы опций и разные дефолты, не меняя общий стандарт.

  3. Значения разделов и страниц хранятся в .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 → sitelink

Итоговое значение каждого параметра в SF4 выбирается по строгому приоритету:

  1. page — настройки конкретной страницы (секция page в .property.php текущего раздела),
  2. section — настройки раздела (секция section в .property.php, с наследованием от родительских разделов),
  3. site — глобальные настройки сайта ({site_dir}/simai.data/.site.property.php).

Такое наследование позволяет строить сайт как систему “дефолтов”: на уровне сайта задаются базовые решения, разделы корректируют общие правила для ветки, а страницы при необходимости точечно меняют поведение.

User-уровень: настройки через URL и хранение в сессииlink

User-уровень в вашей модели — это временные пользовательские настройки, которые задаются через URL и сохраняются в сессии браузера. Это слой, который влияет на отображение и инструменты, но обычно не фиксируется как постоянная конфигурация сайта.

Типичный пример user-уровня — режимы редактирования. В SF4 пользователь через панель управления:

  1. включает общий режим редактирования,
  2. затем включает режим редактирования гридов.

В этом режиме, например, представления (view) могут менять поведение вывода служебных элементов (через параметр HIDE_ICONS), чтобы было удобно править конфигурацию и диагностировать сборку областей.