Страница с настройками модуля
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
