ほとんどのコンテンツは、Drupalの基本機能で作成することが出来ますが、基本の枠を超えたコンテンツを作成する場合は、Drupalの基本機能で実現が難しい場合があります。

その場合は、カスタムモジュールを作成することにより、より複雑な仕様や要求に対応したコンテンツの作成が可能です。

まず、初めにカスタムモジュールの作成方法をご紹介します。

■ 画面に「Hello World !!」と表示されるカスタムモジュールの作成例

※実行すると画面に「Hello World !!」と表示されるカスタムモジュールの基本的な作成方法です。

1.モジュールのファイル一式を格納するディレクトリの作成。

Drupalプロジェクトのmodulesディレクトリ配下に、
カスタムモジュール用のディレクトリを新規作成します。

※今後カスタムモジュールが増えた時の為にcustomというディレクトリを作成してその直下に今回作成するカスタムモジュール用のディレクトリ(hello_world)を作成しました。

drupal
 ├ modules
   ├ custom
     └ hello_world

 

2.モジュールのメタ情報ファイルを作成

1.で作成したディレクトリ(hello_world)の直下に

今回のファイル名はhello_world.info.ymlになります。
メタ情報を作成する事でDrupalがモジュールを認識してくれます。

[ hello_world.info.yml ]
name: 'hello_world custom module' ⇒ 任意の名前
type: module
description: 'This is hello_world module.'
core: 8.x ⇒ Drupalのバージョン

 

3.モジュールファイルの作成

モジュールの基本となる「モジュール名.module」ファイルを作成します。
ファイル名はhello_world.moduleになります。

今回は「Hello World !!」を表示するだけなのでこのファイルは使用しないので、
中身は空のファイルを作成します。

 

4.コントローラファイルの作成

今回は、srcディレクトリを新規作成し、その配下にHelloWorldController.phpを作成します。
以下はコーディング例になります。

[ HelloWorldController.php ]
<?php

namespace Drupal\hello_world;

use Drupal\Core\Controller\ControllerBase;

/**
* Hello World !!の表示
*/
class HelloWorldController extends ControllerBase {
  public function content() {
   return array(
    '#markup' => '' . t('Hello World !!') . '',
   );
  }
}

 

5.モジュールのルーティング情報ファイル作成

ルーティング情報ファイル用の「モジュール名.routing.yml」ファイルを作成します。
ルーティング情報ファイルは、特定のパスにアクセスした時に、特定のコントローラーを利用させるように設定するファイルです。
今回は、hello_world.routing.ymlになります。

この設定により、そのDrupalサイトの/hello_worldというパスにアクセスをすると、
4で作成したHelloWorldController.php内のHelloWorldController::contentメソッドが対応するようになります。

[ hello_world.routing.yml ]
hello_world: ⇒ ルーティング設定の名前
path: '/hello_world' ⇒ 対象とするURLパス指定
defaults:
 _title: 'Hello World Title'
 _controller: '\Drupal\hello\HelloWorldController::content'
requirements:
 _permission: 'access content'

 

6.モジュールをインストール(有効化)

Drupal管理画面からタブ「拡張機能」を選択すると、モジュールの一覧が表示されるので、
その画面から今回作成したカスタムモジュールをインストールします。

今回は、hello_world module.というモジュールを作成したので、
モジュールの横にあるチェックボックスにチェックを入れて、画面の一番下の「設定を保存」をクリックします。

以上で、有効化が完了になります。

最後に、ブラウザからパス/hello_worldにアクセスして今回作成したページに「Hello World !!」と無事表示されるか確認をしましょう。

無事表示されれば、モジュール作成完了になります。

 

今回は「Hello World !!」という文字を表示するだけだったので簡単でしたが、凝ったコンテンツの作成や業務で使用するコンテンツを作成する場合は、コントローラやモジュールに複雑な処理を組み込んでいく必要があります。

もちろんカスタムモジュールなのである程度自由な書き方が出来ますが、Drupalが提供する機能を使いスマートな汎用性の高いコーディングをする為にDrupalから提供されている以下のサンプルコードを参考にコーディングする事をお勧めします。

【開発者向けサンプルコード】のダウンロードページはこちら

※ダウンロードしたサンプルコードの詳細に関しては、以下のページが参考になりました。

【Acquia】Examplesモジュールの詳細はこちら

 

今回は以上になります。また次回のブログでお会いしましょう!!