Созонов Алексей

Веб-разработчик

Страница с настройками модуля

09.08.2015

Пример создания своей страницы с настройками модуля:

В файле НАЗВАНИЕМОДУЛЯ.module пишем (не забудьте заменить onthisdate на название своего модуля):

<?php

function onthisdate_menu() {

  $items = array();

  $items['admin/settings/onthisdate'] = array(
    'title' => 'On this date module settings',
    'description' => 'Description of your On this date settings page',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('onthisdate_admin'),
    'access arguments' => array('administer onthisdate settings'),
    'type' => MENU_NORMAL_ITEM,
   );

  return $items;
}

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

  $form['onthisdate_maxdisp'] = array(
    '#type' => 'textfield',
    '#title' => t('Maximum number of links'),
    '#default_value' => variable_get('onthisdate_maxdisp', 3),
    '#size' => 2,
    '#maxlength' => 2,
    '#description' => t("The maximum number of links to display in the block."),
    '#required' => TRUE,
  );

  return system_settings_form($form);
}

function onthisdate_admin_validate($form, &$form_state) {
  $maxdisp = $form_state['values']['onthisdate_maxdisp'];
  if (!is_numeric($maxdisp)) {
    form_set_error('onthisdate_maxdisp', t('You must enter an integer for the maximum number of links.'));
  }
  elseif ($maxdisp <= 0) {
    form_set_error('onthisdate_maxdisp', t('Maximum number of links must be positive.'));
  }
}

Стоит обратить внимание на то, что поля типа text_format по умолчанию не сохраняются. Для них нужно создавать дополнительный обработчик:

...

  $form['#submit'][] = 'custom_onthisdate_admin_form_submit';
}

function custom_onthisdate_admin_form_submit(&$form, &$form_state) {
  variable_set('text_format_field_value', $form_state['values']['text_format_field']['value']);
}

Формат по умолчанию можно задать при помощи #format:

  '#format' => 'full_html',
#Drupal