モジュールの作成は意外に簡単!
モジュールの作成というと、「デベロッパーの方だけの話かな?」と思う方が多いかもしれません。実際私も最初は「なんか難しそう」と思って尻込みしてしまいそうでした。でも、Drupalでは簡単に独自のモジュールを作成できるように設計されていますので、慣れていない方も大丈夫です!なるほどdrupal.orgのモジュールのダウンロードセクションにあるような、機能満載のモジュールを作成するのは素人には難しいでしょう。そういったものではなく、例えば、サイトのフォームやメニューにほんの少しの変更を加え、自分の好みの表示や動作に調整しようとするときにも、どうしても独自のシンプルなモジュールを作成しなければならないことがあります。drupal.orgのコミュニティメンバーによるフォーラムスレッドでも、「その機能を実装するには、自分のカスタムモジュールにこのコードを加えるとできますよ。・・・」などと書いてあることが多いですが、そんなときには本投稿で作成するようなモジュールの枠組みの中に、そのコードを書き込むだけでOKの場合がほとんどです。というわけで、この投稿ではDrupal 6.x用の、functionを書き込む前の空っぽのモジュールを作成する方法をご紹介します。
モジュール名の注意点
もしもご自分のサイトにcustomというテーマがあったら、同じ名前のcustomというモジュールは作成しないでください。2つが衝突してDrupalがおかしな挙動をするそうです。それと、モジュール名(やテーマ名)を2語に分ける場合、custom_module.infoやcustom_module.moduleのようにアンダースコアを用いるようにしてください。custom-module.infoのようにハイフンを用いるのはやめましょう。2010customなど、モジュール名を数字で始めるのも良くないようです。
必要なファイル
customというモジュールを作成すると仮定します。モジュールを作成するにはsites/all(またはexample.com)/modulesディレクトリ内にcustomというディレクトリを作成し、そのcustomディレクトリ内にcustom.infoファイルとcustom.moduleファイルの2つを作成する必要があります(下図参照)。
infoファイル
infoファイル内には、下のname、description、coreの3項目が必須です。nameとdescriptionはお好きなように変更してください。
このinfoファイルの書式はiniフォーマットです(PHP: parse_ini_file - Manual参照)。
name = Custom
description = My custom module.
core = 6.x
その他、dependencies(他のモジュールへの依存)、package(モジュールのグループ)など任意に設定することができます。詳しくは下記ページをご参照ください。 参考ページ: Telling Drupal about your module | drupal.org
moduleファイル
<?phpの後に独自のfunctionを書き込んでいきます。?>タグはCoding standardsに従って、記載しないようにしてください。Coding standardsのページにはその他にもコーディングの法則が書いてありますので、参考にしてください。Coderモジュールをインストールすると、Coding standardsに従ってコードをチェックし、訂正すべき箇所を指摘してくれます。また、Drupal 5.x用のモジュールを6.x用のモジュールにアップデートする際にも、どのhookをどのように修正すればよいかなどを教えてくれたりもします。是非試していただきたいオススメのモジュールです。
モジュールの有効化
後はexample.com/admin/build/modulesでモジュールを有効化するだけです。モジュールを有効化してもmoduleファイル内にコードが書いてないのでまったく意味がないのですが、Drupalはここで作成したcustomモジュールを参照してくれています。試しに下のコードをcustom.moduleファイルに書き込んでください。
/**
* Implementation of hook_menu_alter().
*/
function custom_menu_alter(&$items) {
unset($items['user/password']);
}
キャッシュをクリアした後、example.com/userに移動して、パスワードの再発行のタブがなくなっていたら成功です。
テーマのtemplate.phpファイルでは対応しきれない、モジュールでなければ使えないhookは、このようにmoduleファイルにコードを追加していくことで使用可能です。詳細な情報が欲しい方は、英語ですが下のリンクをご参照ください。

コメントを追加