Drupal własna strona konfiguracyjna

Może się zdarzyć, że będziemy potrzebować jakiejś strony z różnymi (własnymi) opcjami konfiguracyjnymi takimi jak np. w podstawowych danych. Jest to przydatne do określenia stałych elementów strony, które jednak powinny mieć możliwość zmiany. Moje rozwiązanie polega na stworzeniu do tego celu własnego modułu. Moduł doda odpowiednią stronę opcji konfiguracyjnych do panelu admina. Najpierw musimy stworzyć katalog (nazwa katalogu taka jak nazwa modułu) oraz obowiązkowy plik .info. Konwencja nazwa_modulu.info np. mysettings.info. Obowiązkowa zawartość pliku to

name = Mysettings
description = Opcje konfiguracyjne
core = 6.x
Następnie należy stworzyć plik mysettings.module (znów początkowa nazwa pliku to nazwa modułu). Załóżmy, że chcemy dodać możliwość zmiany jakiegoś intro tekstu na stronie. Kod pliku mysettings.module przedstawia poniższy listing.
function mysettings_perm() {
  return array('access mysettings content');
}

function mysettings_admin() {
  $form = array();

  $form['mysettings_intro'] = array(
    '#type' => 'textarea',
    '#title' => t('Intro tekst'),
    '#default_value' => variable_get('mysettings_intro', ''),
    '#description' => t('')
  );

  return system_settings_form($form);
}

function mysettings_menu() {

  $items = array();

  $items['admin/settings/mysettings'] = array(
    'title' => t('Mysettings'),
    'description' => t('Podstawowe opcje konfiguracyjne'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('mysettings_admin'),
    'access arguments' => array('access administration pages'),
    'type' => MENU_NORMAL_ITEM,
   );

  return $items;
}
Funkcja mysettings_perm dodaje uprawnienie do działu Permissions, mysettings_admin określa formularz (i jego jedno pole), a mysettings_menu dodaje link menu (ścieżka admin/settings/mysettings). Ważne: page callback - strona odbierająca dane (tutaj formularz), page arguments - tu podajemy nazwę funkcji mysettings_admin, będzie się ona wyświetlać po wejściu na admin/settings/mysettings. Opcja access arguments określa jakie uprawnienia są potrzebne aby uzyskać dostęp do tego elementu menu. Jeśli teraz chcemy skorzystać z ustawionej wartości mysettings_intro np. w templacie możemy napisać
function nazwatemplatu_preprocess_page(&$vars, $hook) {
...
$vars['intro']  = variable_get('mysettings_intro','');
...
}
Teraz w pliku .tpl templatu możemy użyć zmiennej $intro.