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( <pre><code> &lt;strong&gt;&lt;font color="orange"&gt;PRIVILEGE_ADMIN&lt;/font&gt;&lt;/strong&gt;, PRIVILEGE_CREATE, PRIVILEGE_VIEW, PRIVILEGE_EDIT ); </code></pre>} function hook_menu($may_cache) { $items = array(); if ($may_cache) { ... <pre><code>$items[] = array( 'type' =&gt; MENU_NORMAL_ITEM, 'path' =&gt; '&lt;strong&gt;admin/settings/hook&lt;/strong&gt;', 'title' =&gt; t('hook Settings'), 'access' =&gt; user_access(&lt;strong&gt;&lt;font color="orange"&gt;PRIVILEGE_ADMIN&lt;/font&gt;&lt;/strong&gt;), 'callback' =&gt; 'drupal_get_form', 'callback arguments' =&gt; '&lt;strong&gt;&lt;font color="blue"&gt;hook_admin&lt;/font&gt;&lt;/strong&gt;', 'description' =&gt; 'Configure hook settings' ); </code></pre> ... } return $items; } function <strong><font color="blue">hook_admin</font></strong>() { // ※初回アクセス時は variable_get のデフォルト値(https://yourdomain.com/)が入る。 $form['hook_url'] = array( <pre><code>'#type' =&gt; 'textfield', '#title' =&gt; t('URL'), '#default_value' =&gt; &lt;strong&gt;variable_get&lt;/strong&gt;('&lt;strong&gt;&lt;font color="red"&gt;hook_url&lt;/font&gt;&lt;/strong&gt;', 'https://yourdomain.com/'), '#size' =&gt; 255, '#maxlength' =&gt; 255, '#weight' =&gt; -2, '#required' =&gt; TRUE </code></pre> ); // ※初回アクセス時は variable_get のデフォルト値(0)が入る。 $form['hook_check'] = array( <pre><code>'#type' =&gt; 'checkbox', '#title' =&gt; t('Check'), '#default_value' =&gt; &lt;strong&gt;variable_get&lt;/strong&gt;('&lt;strong&gt;&lt;font color="red"&gt;hook_check&lt;/font&gt;&lt;/strong&gt;', 0), '#weight' =&gt; 0, '#required' =&gt; FALSE </code></pre> ); // type を fieldset にすると以下、username、password、hostname を // グループ化することができる。 $form['<strong>hook_login'] = array(
 '#type'         => 'fieldset',
 '#title'        => t('Login Information'),
 '#tree'         => TRUE
); $login = variable_get('hook_login', NULL), $form['hook_login']['hostname'] = 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['hook_login']['username'] = 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['hook_login']['password'] = 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 = variable_get('hook_url' , 'https://yourdomain.com/'); $isCheck = variable_get('hook_check', 0); // variable_get('キー', 'デフォルト値') で値を取得して $login = variable_get('hook_login', NULL); // 設定画面でグループ化した変数はハッシュテーブル(array)でアクセス可能 $username = $login['username']; $password = $login['password']; $hostname = $login['hostname']; ... } ?>