利用 system_settings_form() 定制后台管理
在开发过程中,往往要定制一些后台管理界面,有些信息需要在后台设置,这样维护起来更方便.我们可以自定义一个后台管理界面,编写一个form表单 ,将这个form作为参数传递给钩子函数system_settings_form($form),system_settings_form($form)获取表单结构,添加一个默认的button,并且设置它的前缀.
下面是完整的一个例子,可以作为参考.通过定义一个菜单路径admin/settings/personal_information,获取管理界面的表单.之后可以再定义一个菜单,调用前台的表单,在前台表单中获取相应后台设置的值,这其中的get_personal_info_system_setting()是通过"\r\n"分割获取后台管理界面添加值,这样前台的表单字段值就可以通过这个函数传递一个参数获取,而这个参数就是我们之前后台表单字段对应的name.这样就可以获取到在后台添加好的值.
<?php
/**
* Implementation of hook_menu().
*/
function personal_info_menu() {
$items = array();
//管理界面
$items['admin/settings/personal_information'] = array(
'title' => 'Personal Information',
'page callback' => 'drupal_get_form',
'page arguments' => array('personal_info_admin_settings'),
'access arguments' => array('admin personal_info'),
'type' => MENU_NORMAL_ITEM,
);
//调用管理页面设置的值
$items['get_personal_info'] = array(
'title' => 'Personal Information',
'page callback' => 'drupal_get_form',
'page arguments' => array('personal_info_form'),
'access arguments' => array('access content'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
/**
* Implementation of hook_perm().
*/
function personal_info_perm() {
return array('admin personal_info');
}
//管理页面form
function personal_info_admin_settings() {
$form = array();
$form['specialty'] = array(
'#type' => 'textarea',
'#title' => t('Specialty'),
'#description' => t('Fill in your specialty, please note: add a per line'),
'#default_value' => variable_get('specialty', 'Calligraphy'),
);
$form['favorite'] = array(
'#type' => 'textarea',
'#title' => t('Favorite'),
'#description' => t('Fill in your interest, please note: add a per line'),
'#default_value' => variable_get('favorite', 'Basketball'),
);
return system_settings_form($form);
}
/**
* Implementation of hook_form().
*/
function personal_info_form() {
$form = array();
$form['per_specialty'] = array(
'#type' => 'select',
'#title' => t('Specialty'),
'#required' => TRUE,
'#options' =>get_personal_info_system_setting("specialty"),
'#default_value' =>'Calligraphy',
);
$form['per_favorite'] = array(
'#type' => 'select',
'#title' => t('Favorite'),
'#required' => TRUE,
'#options' =>get_personal_info_system_setting("favorite"),
'#default_value' =>'Basketball',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
return $form;
}
//通过"\r\n"分割获取后台管理界面添加值
function get_personal_info_system_setting($name,$query=FALSE){
$per_info = variable_get($name, '');
$c_per_info = explode("\r\n",$per_info);
$c_per_info = array_unique($c_per_info);
foreach($c_per_info as $key=>$v) {
if(empty($v)) {
unset($c_per_info[$key]);
}
}
foreach($c_per_info as $value){
$value = trim($value);
$result[$value] = $value;
}
return $result;
}
?>
- 添加新评论
- 576 次点击