Drupal で、モジュール固有の設定値を使うには?(variable_get)

Drupal で、自分の作ったモジュールで設定画面を出して各種パラメータなど固有の値の設定をさせたい場合があるだろう。ここでは「hook」というモジュールを例に考えてみよう。設定画面を https://yourdomain.com/admin/settings/hook/ にアクセスしたときに表示させたい場合には、以下のようにする(「hook」とあるところは、「yourmodulename」となるので、適宜置換すること)。
<?php

define
('PRIVILEGE_ADMIN' , 'administer server settings');
define('PRIVILEGE_CREATE', 'create hook's own forms and docs');
define('
PRIVILEGE_VIEW'  , 'view hook's own forms and docs');
define('PRIVILEGE_EDIT'  , 'edit hook's own forms and docs');

function hook_perm() {
  return array( 
                <strong><font color="orange">PRIVILEGE_ADMIN</font></strong>,
                 PRIVILEGE_CREATE,
                 PRIVILEGE_VIEW,
                 PRIVILEGE_EDIT
               );
}

function hook_menu($may_cache) {

  $items = array();

  if ($may_cache) {

...

    $items[] = array(
      '
type'               => MENU_NORMAL_ITEM,
      '
path'               => '<strong>admin/settings/hook</strong>',
      '
title'              => t('hook Settings'),
      '
access'             => user_access(<strong><font color="orange">PRIVILEGE_ADMIN</font></strong>),
      '
callback'           => 'drupal_get_form',
      '
callback arguments' => '<strong><font color="blue">hook_admin</font></strong>',
      '
description'        => 'Configure hook settings'
    );

...

  }

  return $items;
}

function <strong><font color="blue">hook_admin</font></strong>() {

  // ※初回アクセス時は variable_get のデフォルト値(https://yourdomain.com/)が入る。
  $form['
hook_url'] = array(
    '
#type'          => 'textfield',
   
'#title'         => t('URL'),
   
'#default_value' => <strong>variable_get</strong>('<strong><font color="red">hook_url</font></strong>', 'https://yourdomain.com/'),
   
'#size'          => 255,
   
'#maxlength'     => 255,
   
'#weight'        => -2,
   
'#required'      => TRUE
 
);

 
// ※初回アクセス時は variable_get のデフォルト値(0)が入る。
 
$form['hook_check'] = array(
   
'#type'          => 'checkbox',
   
'#title'         => t('Check'),
   
'#default_value' => <strong>variable_get</strong>('<strong><font color="red">hook_check</font></strong>', 0),
   
'#weight'        => 0,
   
'#required'      => FALSE
 
);

 
// type を fieldset にすると以下、username、password、hostname を
  // グループ化することができる。
 
$form['<strong><font color="red">hook_login</font></strong>'] = array(
    
'#type'         => 'fieldset',
    
'#title'        => t('Login Information'),
    
'#tree'         => TRUE
);

 
$login = <strong>variable_get</strong>('<strong><font color="red">hook_login</font></strong>', NULL),
 
$form['<strong><font color="red">hook_login</font></strong>']['<strong><font color="green">hostname</font></strong>'] = array(
   
'#type'          => 'textfield',
   
'#title'         => t('Server Name'),
   
'#default_value' => $login['<strong><font color="green">hostname</font></strong>'] ? $login['<strong><font color="green">hostname</font></strong>'] : 'localhost',
   
'#size'          => 64,
   
'#maxlength'     => 255,
   
'#weight'        => -8,
   
'#required'      => TRUE
 
);

 
$form['<strong><font color="red">hook_login</font></strong>']['<strong><font color="green">username</font></strong>'] = array(
   
'#type'          => 'textfield',
   
'#title'         => t('Username'),
   
'#default_value' => $login['<strong><font color="green">username</font></strong>'] ? $login['<strong><font color="green">username</font></strong>'] : 'admin',
   
'#size'          => 32,
   
'#maxlength'     => 32,
   
'#weight'        => -6,
   
'#required'      => TRUE
 
);

 
$form['<strong><font color="red">hook_login</font></strong>']['<strong><font color="green">password</font></strong>'] = array(
   
'#type'          => 'password',
   
'#title'         => t('Password'),
   
'#default_value' => $login['<strong><font color="green">password</font></strong>'] ? $login['<strong><font color="green">password</font></strong>'] : 'password',
   
'#size'          => 32,
   
'#maxlength'     => 32,
   
'#weight'        => -4,
   
'#required'      => TRUE
 
);

  return
system_settings_form($form);
}

function
your_function() {

 
// 通常の設定値は以下のようになる。
 
$url     = <strong>variable_get</strong>('<strong><font color="red">hook_url</font></strong>'  , 'https://yourdomain.com/');
 
$isCheck = <strong>variable_get</strong>('<strong><font color="red">hook_check</font></strong>', 0);

 
// variable_get('キー', 'デフォルト値') で値を取得して
 
$login   = <strong>variable_get</strong>('<strong><font color="red">hook_login</font></strong>', NULL);

 
// 設定画面でグループ化した変数はハッシュテーブル(array)でアクセス可能
 
$username = $login['<strong><font color="green">username</font></strong>'];
 
$password = $login['<strong><font color="green">password</font></strong>'];
 
$hostname = $login['<strong><font color="green">hostname</font></strong>'];

...

}
?>
トラックバック URL: https://perltips.twinkle.cc/trackback/202
Posted on 2007-05-18 by yas |