В Gantry framework существует два варианта установки параметров: статический и динамический. Статический способ установки — способ привязки групп параметров к пунктам меню. Данный метод был описан в статье Назначение стилей для пунктов меню. Второй способ — динамический — использует пользовательскую сессию, cookie браузера клиента и строку запроса url.
Приоритет параметров
Все настройки шаблона хранятся в конфигурационном файле template-options.xml
. Но все они могут быть изменены различными методами, причём методы имеют свои приоритеты в иерархии. Методы по приоритету:
- Строка запроса URl
- Сookie браузера
- Сессия пользователя
- Установленные путём привязки к пунктам меню
- Параметры, выставленные по-умолчанию
Параметр выставленный более приоритетным методом будет принят системой как действующий, не зависимо от того, что использовалось ранее. Таким образом, если у вас шаблон настроен по умолчанию стиль 1, а к какому-то пункту меню привязан стиль 2, то естественно на странице этого пункта меню будет стиль 2. Всё логично. Другой пример, если у вас существует preset1 и preset2, и по умолчанию установлен первый, то введя в адресную строку ВАШ_САЙТ/?presets=preset2
вы увидите что будет использован preset2.
Разрешение динамических параметров
Управлять динамическими методами изменениями параметров вы можете используя следующее атрибуты, которые имеют два состояния true — истина и false — ложь:
- setbyurl — Может ли значение параметра быть определенно строкой запроса url.
- setbycookie — Может ли значение быть установлено используя cookie браузера.
- setincookie — Может ли значение храниться в cookie, если оно отличается от значения по-умолчанию.
- setbysession — Может ли значение быть определено сессией пользователя.
- setinsession — Может ли значение храниться сессией пользователя, если оно отличается от значения по-умолчанию.
- isbodyclass - Позволяет использовать значение параметра в качестве класса CSS.
Пример использования параметров для цвета фона приведен ниже.
Пресеты определены следующим образом:
$gantry_presets = array(
'presets' => array(
'preset1' => array(
'name' => 'Preset 1',
'linkcolor' => '#00c',
'backgroundlevel' => 'low',
),
'preset2' => array(
'name' => 'Preset 2',
'linkcolor' => '#ff0000',
'backgroundlevel' => 'med',
)
)
)
);
И параметры определены как показано ниже:
<param name="presets" type="preset" mode="scroller" default="preset1" label="STYLE_PRESETS" description="STYLE_PRESETS_DESC" setbyurl="true" setinsession="true" setbysession="true" setbycookie="true" setinmenuitem="false" />
<param name="backgroundlevel" default="med" type="slider" class="graphic-level" label="BG_LEVEL" description="BG_LEVEL_DESC" setbyurl="true" setinsession="true" setbysession="true" setincookie="true" setbycookie="true" isbodyclass="true">
<option>low</option>
<option>med</option>
<option>high</option>
</param>
Вызов параметров через URL:
?presets=preset2&backgroundlevel=high
Даст включение параметров:
linkcolor=#ff0000
backgroundlevel=high