Buravo46's Note

学んだ事を書いていくブログです。

【Drupal】HelloWorldと表示するカスタムモジュールの作成

経緯

Drupalのカスタムモジュール作成が面白そうだったので、簡単な文字表示からやってみました。

環境

OS : Windows 7 32bit

Drupal : Drupal Version 7.37

XAMPP : XAMPP Version 5.5.24

Apache : Apache Version 2.4.12

MySQL : MySQL Server Version 5.6.24

PHP : PHP Version 5.6.8

概要

作成するモジュール内容は、コンテンツの部分に文字列を表示するカスタムモジュールです。

手順

下記手順でカスタムモジュールを作成します。

  1. xampp/htdocs/Drupalフォルダ名/sites/all/modules/直下に作成するモジュールフォルダを作成
  2. 作成するモジュール名のフォルダ直下にモジュール名.info, モジュール名.moduleファイルを作成
  3. モジュール名.infoにモジュールの情報を定義
  4. モジュール名.moduleにモジュールとしての動作を定義
  5. Drupalサイトのモジュール管理画面でモジュール名.moduleを有効化
  6. 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 API - hook_menu

Drupal - Writing module .info files (Drupal 7.x)

Umi->d Blog - Drupal モジュールの .info ファイルの書き方 日本語訳

Drupal - Creating modules - a tutorial: Drupal 7.x

Umi->d Blog - Drupal 7 コンセプト解説 フックとは?