УрокИндивидуальные настройки темы в Drupal 7
Как добавлять настройки в тему для Drupal 6 уже всем давно известно. Теперь поговорим о том, как это сделать для Drupal 7. Система этих настроек упростилась и стала более логичной и понятной. Итак, по порядку.
Первым шагом в корне темы надо создать файл theme-settings.php. В нём надо имплементировать хук, который изменяет форму с настройкой темы по умолчанию (да да, в седьмом Друпале в теме можно изменять формы при помощи alter хука!). Пример:
<?php /** * Implements hook_form_FORM_ID_alter(). */ function ИМЯТЕМЫ_form_system_theme_settings_alter(&$form, &$form_state) { $form['foo_example'] = array( '#type' => 'textfield', '#title' => t('Widget'), '#default_value' => theme_get_setting('foo_example'), '#description' => t('Place this text in the widget spot on your site.'), ); }
Этот небольшой кусок кода добавляет к настройкам темы текстовое поле с заголовком Widget. Обращаю внимание на то, что ключ массива $form должен называться так же, как передаваемое значение в функцию theme_get_setting(). В нашем случае это foo_example.
Значение настроек по умолчанию
Если раньше их надо было генерировать в коде, а потом объединять с полученными, то теперь всё прозрачнее. Все настройки темы по умолчанию вынесены в info файл темы, в секцию settings. Для примера покажу файл garland.info из темы Garland:
name = Garland description = A multi-column theme which can be configured to modify colors and switch between fixed and fluid width layouts. package = Core version = VERSION core = 7.x stylesheets[all][] = style.css stylesheets[print][] = print.css settings[garland_width] = fluid
В нашем случае (с foo_example) это смотрелось бы так:
settings[foo_example] = Любой текст или число
Использование настроек темы
Используются настройки просто - в любом месте вызовите функцию () с нужным параметром. Пример:
/** * Implements template_preprocess_page() */ function ИМЯТЕМЫ_preprocess_page(&$vars) { $vars['foo_var'] = theme_get_setting('foo_example'); }
После выполнения этих действий у вас в page.tpl.php появится переменная $foo_bar, которую можно будет менять в настройках темы по адресу admin/appearance/settings/ИМЯТЕМЫ.
- SplasH
- 10.12.2011
- 1905
Комментарии
Только в page.tpl.php ?
Статья интересная и нужная. Расскажите а как менять CSS файлы. Это актуальнее.
theme_get_setting() можно использовать в любых шаблонах. Про css позже напишу.
Функция theme_get_settings() была изъята из Drupal 7 API, если вы ещё не в курсе.
Вместо неё - theme_get_setting($setting_name, $theme = NULL) с извлечением только определённого параметра.
Я-то в курсе, случайно по привычке s дописывал. Спасибо.
А не могли бы вы показать, как через настройки темы загружать картинки, а потом выводить в page.tpl.php (как загружается, логотип)
Комментировать