利用 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;
}

?>