Как создать персональный конфиг для каждой темы шаблона?

FAQ
Вопрос был поставлен так:

Есть шаблон и тема к нему /templates/skin/superskin/themes/supertheme
Хотелось бы , специфичные для темы, вынести в её папку
/templates/skin/superskin/themes/supertheme/config/config.php
Как сделать так чтобы эти конфиги «подхватывались»?

Реализация


Для этого нужно в конфиге шаблона дописать код подключения ещё одного конфига выбранной темы. Во-первых, в файле \templates\skin\synio\settings\config\config.php, который подключается автоматически при использовании шаблона (в данном примере — synio), должна быть определена тема:

// тема
$config['view']['theme'] = 'default';

в конце этого файла перед строкой:

return $config;

нужно добавить код:

/*
 * загрузить конфиг выбранной темы
 */
if (file_exists($sThemeConfig = dirname(dirname(dirname(__FILE__))) . '/themes/' . $config['view']['theme'] . '/config/config.php')) {
	require_once($sThemeConfig);
}


Где теперь хранятся новые дополнительные конфиги для тем шаблонов?


Создавать конфиги теперь можно в папке config каждой темы (например, \templates\skin\synio\themes\default\config\) в файле config.php, который будет автоматически подключатся при выборе этой темы (через опцию $config['view']['theme'] в главном конфиге шаблона).

Например, полный путь к конфигу темы «default» шаблона «synio» будет таким:

\templates\skin\synio\themes\default\config\config.php


Структура файла конфига темы


Сам файл конфига должен быть таким:

<?php

/* Grid type:
 * 
 * fluid - резина
 * fixed - фиксированная ширина
 */
$config['view']['grid']['type'] = 'fixed';

/* Fixed settings */
$config['view']['grid']['fixed_width'] = 1200;


без $config = array(); вначале и return $config; в его конце, иначе вы перекроете настройки главного конфига шаблона этим новым конфигом темы.

Результат


Таким образом через конфиги тем можно перекрывать шаблона и даже главный конфиг движка. Это позволит выполнить более глубокую кастомизацию шаблона в зависимости от выбранной темы.

Заметка: порядок загрузки конфигов движка


Чтобы понимать как задавать опции, следует понимать как движок загружает конфиги:

  1. главный конфиг движка config/config.php
  2. локальный конфиг с новыми (вашими) настройками config/config.local.php
  3. конфиг продакшен сервера config/config.stable.php
  4. конфиги плагинов
  5. конфиг шаблона (в который внесли правки выше)

Из списка видно что конфиг шаблона загружается последним, но тем не менее он имеет ту же «область видимости» (корневой узел) что и главный конфиг и позволяет легко перекрывать настройки предыдущих конфигов. И добавленные конфиги тем шаблонов — тоже.
0 комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.