さて、Drupalのモジュール開発の第2回目です。
ありきたりなテーマで恐縮ですが、Drupalで「Hello!」と表示させるモジュールを作成してみましょう。
第1回の「モジュールの雛形」の.infoと.moduleを利用します。エディタは何でも良いですが、私は、「CodeLobster PHP Edition」を使っています。
エディタで、第1回の.infoの雛形をコピーし、下記のように「sample」を「Hello」に変更します。
name = Hello description = Hello module package = My Module version = 1.0 core = 6.x
ファイル名は、hello.infoで、エンコードはUTF-8で保存します。
次に、.moduleの雛形をコピーし、下記のように変更しましょう。
This is sample module.'; return $output; } } function hello_perm(){ //実行権限をチェック(ユーザ管理の権限管理でユーザごとに実行権限を与える) return array('permission hello'); } function hello_menu(){ //メニュー表示 //'title':表示されるメニュー名 //'page callback':実行される関数名 //'accsess argument':実行権限 $items['hello_execute'] = array( 'title' => t('hello program'), 'page callback' => 'hello_execute', 'access arguments' => array('permission hello'), ); return $items; } function hello_execute(){ $output = drupal_get_form(hello_exe_form); return $output; } function hello_exe_form($form_state){ $form = array(); $form['hello_name'] = array( '#type' => 'textfield', '#title' => t('相手の名前'), '#size' => 32, '#maxlength' => 32, '#description' => '', '#required' => true, ); $form['submit'] = array( '#type' => 'submit', '#value' => t('submit') ); return $form; } function hello_exe_form_validate($form_id, &$form_state){ //チェックロジック } function hello_exe_form_submit($form_id, &$form_state){ //処理ロジック $name = $form_state['values']['hello_name']; drupal_set_message($name ."さん、こんちには!"); } ?>
単純に「Hello」だけを表示するなら、コードはもう少し短くなりますが、今回は最初の画面で名前を入力し「submit」ボタンを押すと、その名前を含めて、「こんにちは、~さん」と表示するようにしました。
hello_exe_form()で、名前入力とsubmitボタンを表示し、submitボタンが押されると、hello_exe_form_submit()で処理をします。
この時、hello_exe_form()からhello_exe_form_submit()への値の引渡しは、hello_exe_form_submit()側で、$form_state[‘values’][‘hello_name’]で参照することができます。これが一つのキーポイントになります。
後は、この引き渡された値(名前)と「さん、こんにちは!」を組み合わせて、Drupalの画面に表示させているのが
drupal_set_message($name .”さん、こんちには!”);
です。
完成したら、通常のモジュールと同様にこの2つのプログラムをhelloフォルダに格納し、FTPでsites/all/modules/配下にコピーして、Drupalの管理画面のモジュールで有効化してください。
すると、Drupalのメニューに「hello program」が表示されますので、それをクリックします。
この画面で、「名前」に例えば、Drupalと入力し、submitをクリックすると、
と「Dupalさん、こんにちは!」と表示されます。