経緯
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 ファイルの書き方 日本語訳