07. เพิ่มส่วนของการตั้งค่า (Create a module configuration (settings) page)

Topic: 
 
ทำให้ตั้งค่าได้ด้วยฟังก์ชั่น onthisdate_admin
ทำเป็นฟอร์มโดยบรรจุอาเรย์ในรูปของ array( '#name => 'value', ... )
<?php
function onthisdate_admin() {

  $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);
}
?>
  • ใช้ฟังก์ชั่น t() ในการแสดงผลอักขระ
  • ใช้ฟังก์ชั่น variable_get('variable_name',default_value) ในการรับค่าตัวแปรจากระบบ ซึ่งในที่นี้เรากำหนดค่าปริยายให้ onthisdate_maxdisp เป็น 3
  • ต้องคืนค่าให้ระบบด้วยฟังก์ชั่น system_settings_form()

เอาส่วนของการตั้งค่านี้ คือตัวเลข onthisdate_maxdisp ไปใส่ในฟังก์ชั่น onthisdate_block() ดังนี้

//--- onthisdate_block function ---
...
  $limitnum = variable_get("onthisdate_maxdisp", 3);

  $query = "SELECT nid, title, created FROM " .
           "{node} WHERE created >= %d " .
           "AND created <= %d";

  $queryResult = db_query_range($query, $start_time, $end_time, 0, $limitnum);
...


ทำให้เรียกใช้งานตั้งค่า ผ่านเมนูได้ด้วยฮุก onthisdate_menu
<?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 control',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('onthisdate_admin'),
    'access arguments' => array('access administration pages'),
    'type' => MENU_NORMAL_ITEM,
   );

  return $items;
}
?>
กรองความถูกต้องของการป้อนข้อมูลด้วยฟังก์ชั่น onthisdate_admin_validate
<?php
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 select a number for the maximum number of links.'));
  }
  else if ($maxdisp <= 0) {
    form_set_error('onthisdate_maxdisp', t('Maximum number of links must be positive.'));
  }
}
?>

ดูเพิ่ม

 

Syndicate

Subscribe to Syndicate

Who's online

There are currently 0 users online.