Drupal → Создание дополнительных настроек темы

16.05.2011

У каждой темы есть страница с настройками, на которой можно изменить захардкоденные опции, такие например как — показывать лого/нет, показывать меню/нет и т.д.:

Настройки темы Bartik

Чтобы добавить на эту страницу свои опции, нужно:

1. Добавить в .info файл темы, дефолтные значения ваших опций, в формате:

settings[themename_varname] = varvalue

Например, чтобы добавить в Bartik опцию Ширина страницы, нужно в bartik.info прописать:

settings[bartik_width] = 960

2. Создать в папке с темой файл theme-settings.php и реализовать в нём хук hook_form_FORM_ID_alter(), в котором добавить в форму system_theme_settings нужные элементы. Например:

<?php
/**
 * Implements hook_form_FORM_ID_alter().
 */
function bartik_form_system_theme_settings_alter(&$form, $form_state) {
  $form['advanced_settings'] = array(
    '#type' => 'fieldset',
    '#title' => t('Advanced settings'),
  );
  
  $form['advanced_settings']['bartik_width'] = array(
    '#type' => 'textfield',
    '#title' => t('Page width'),
    '#field_suffix' => 'px',
    '#size' => 4,
    '#required' => TRUE,
    '#default_value' => theme_get_setting('bartik_width'),
  );
}

3. Сбросить кэш.

После этого на странице настроек темы появится новый филдсет:

Получить доступ к настройкам можно с помощью фукнции theme_get_setting(). Например в html.tpl.php:

<body style="width:<?php echo theme_get_setting('bartik_width'); ?>px;">
Написанное актуально для
Drupal 7
Похожие записи

Комментарии

Владимир
17.05.2011, 13:42

Интересно, а для шестой версии, есть похожие элегантные способы?

Добавить комментарий