【Drupal】HelloWorldと表示するカスタムモジュールの作成
経緯
Drupalのカスタムモジュール作成が面白そうだったので、簡単な文字表示からやってみました。
環境
OS : Windows 7 32bit
XAMPP : XAMPP Version 5.5.24
Apache : Apache Version 2.4.12
MySQL : MySQL Server Version 5.6.24
概要
作成するモジュール内容は、コンテンツの部分に文字列を表示するカスタムモジュールです。
手順
下記手順でカスタムモジュールを作成します。
- xampp/htdocs/Drupalフォルダ名/sites/all/modules/直下に作成するモジュールフォルダを作成
- 作成するモジュール名のフォルダ直下にモジュール名.info, モジュール名.moduleファイルを作成
- モジュール名.infoにモジュールの情報を定義
- モジュール名.moduleにモジュールとしての動作を定義
- Drupalサイトのモジュール管理画面でモジュール名.moduleを有効化
- http://localhost/Drupalフォルダ名/モジュール名_menu関数で定義した画面Path/にアクセス
具体例
まずはxampp/htdocs/Drupalフォルダ名/sites/all/modules/直下にexample_hello_worldフォルダを作成します。
次にxampp/htdocs/Drupalフォルダ名/sites/all/modules/example_hello_worldフォルダ直下にexample_hello_world.info, example_hello_world.moduleを作成します。
../sites/all/modules/フォルダ直下にカスタムモジュールを配置することで、モジュール管理画面上に表示されるようになります。コアモジュール以外のモジュールは../sites/all/modules/フォルダ直下に配置することで使用することが出来ます。
次からはモジュールの情報や動作を定義していきます。
まずはexample_hello_world.infoにモジュールの情報を定義します。 下記が定義したモジュールの情報です。
; モジュール名 name = Example Hello World ; モジュールの概要 description = Example. ; Drupalコアのバージョン core = 7.x ; パッケージ名 package = Example
上記ではモジュール管理画面で表示されるモジュール名、モジュールの概要、対応しているDrupalコアのバージョン、パッケージ名を定義しています。
次はexample_hello_world.moduleにモジュールとしての動作を定義します。 下記が定義したモジュールの動作です。
<?php /** * @file * Hello World と表示するモジュール. */ /** * Implements hook_menu(). */ function example_hello_world_menu() { // 文字列を適切な言語へ変換 $hello_title = t('Hello World Page'); $hello_description = t('Hello World ! と表示する画面'); // Hello World と表示する画面のPathとアクセス時の挙動 $items['example/hello'] = array( // ページ名 'title' => $hello_title, // ページの概要 'description' => $hello_description, // ユーザがページを訪問した際に呼び出されるコールバック関数 'page callback' => 'example_hello_world_callback', // アクセス時に呼び出されるコールバック関数.TRUEならアクセス許可. 'access callback' => TRUE, ); return $items; } /** * HelloWorldと表示する画面のアクセス時のコールバック関数 * Hello World と表示する. * @return $hello_world * 表示する文字列 * @see example_hello_world_menu */ function example_hello_world_callback() { // 文字列を適切な言語へ変換 $hello_world = t('Hello World !'); return $hello_world; }
上記ではhook_menu
関数で画面のPathとURLリクエスト時の処理を定義しています。
example/hello
とPathを定義すると、http://localhost/Drupalフォルダ名/example/hello/で定義した画面にアクセスすることができます。
画面にアクセス時には'page callback'
で定義しているexample_hello_world_callback
関数が呼び出されます。
画面アクセス時のコールバック関数として定義しているexample_hello_world_callback
関数ではHello World
と文字を返り値として渡して、文字の表示を行なっています。
実際にhook_menu
関数などの先頭にhook
とある関数を定義する場合は、hook
の部分をモジュール名
に変える必要があるので注意しましょう。
これでHelloWorldと表示するカスタムモジュールが作成できました。
あとはモジュール管理画面でカスタムモジュールを有効化して画面にアクセスするだけですね。
まとめ
hook_menu
関数を使い、画面のPathとURLリクエスト時の処理を定義してHelloWorldと表示するカスタムモジュールを作成しました。
カスタムモジュールの作成はフック関数を理解するのに苦労しました。
けど、慣れると色々なフック関数を組み合わせて簡単にカスタムモジュールが作成できそうで面白いですね。
参考サイト
Drupal - Writing module .info files (Drupal 7.x)
Umi->d Blog - Drupal モジュールの .info ファイルの書き方 日本語訳