nmta engineer blog

エンジニアのnmtaが執筆しているブログです。

Drupal8 カスタムモジュール作成手順

HelloWorldモジュールを作る

この辺を参考に作成しました。 バージョンの違いなんですかね?記事通りだと動かないとことかあって、ちょこちょこ変えてるんでその辺書いていきます。

ディレクトリとファイルを作成する

modulesディレクトリの直下に任意の名前でディレクトリを作成します。 ここでは「hello」とします。

modules/hello

modules/custom/helloのようにもう一つディレクトリを掘ってもちゃんと認識してくれます。 カスタムモジュールを一箇所に集めたい場合なんかは便利です。

作成したディレクトリ内に以下のファイルを作成します。

hello/

  • hello.info.yml
  • hello.module
  • hello.routing.yml
  • src/Controller/HelloController.php

ファイルを編集する

hello.info.yml

name: Hello World
description: Just print 'Hello World!' on display.
type: module
core: 8.x

f:id:nmta:20171019153712p:plain

hello.module

モジュールの本体ですが、今回は何も記述しません。

hello.routing.yml

hello:
    path: '/hello'
    defaults:
        _title: 'ようこそ'
        _controller: 'Drupal\hello\Controller\HelloController::world'
    requirements:
        _permission: 'access content'

ブラウザから /hello にアクセスした場合、指定のコントローラーの関数を呼び出すように設定します。 ここでは、HelloControllerのworld()を呼んでいます。

src/Controller/HelloController.php

<?php

namespace Drupal\hello\Controller;

class HelloController {
    public function world() {
        return array(
            '#markup' => '' . t('Hello World') . '',
        );
    }
}

ここまででモジュールが完成しました。

作成したモジュールをインストール

  • 管理者権限でログイン
  • 管理メニューから[機能拡張]メニューを開く
  • 機能一覧から作成したモジュールを探す
  • チェックを入れてインストール

f:id:nmta:20171019154340p:plain

f:id:nmta:20171019154422p:plain

有効化されれば成功です。 リストにモジュールが表示されない、正しくインストールできない、などの場合は設定を見直してください。

/hello

早速 /hello にアクセスしてみます。

f:id:nmta:20171019154607p:plain

表示できました。

Drupal8.4をインストール

www.drupal.org

インストールの準備

3.1. 概念: サーバー要件 | Drupal.org

ここを参考に。 私の環境はこんな感じです。

Drupal本体を入手

公式サイトからdrupal本体をダウンロードします。

wget https://ftp.drupal.org/files/projects/drupal-8.4.0.tar.gz
tar -zxvf drupal-8.4.0.tar.gz

tarを解凍し、サーバーのDcumentRootに配置します。 この時、フォルダ名は好きな名称に変更してください。

mv drupal-8.4.0 nmta

ここではnmtaに変更しました。変更しなくてもいいです。

インストール

先ほど配置したDrupal本体にブラウザからアクセスします。

f:id:nmta:20171013165428p:plain

画面からインストールに必要な設定を行います。

必要なフォルダの作成

f:id:nmta:20171013165649p:plain:w450

sites/default/の直下にfiles、作成したfilesの直下にtranslationsフォルダを作成します。

mkdir -p sites/default/files/translations

f:id:nmta:20171013170105p:plain:w450

作成したフォルダは書き込みが可能なパーミッションを設定します。

chmod 777 sites/default/files sites/default/files/translations

f:id:nmta:20171013170212p:plain:w450

settings.php

f:id:nmta:20171013170305p:plain:w450

translationsフォルダを作成したため翻訳ファイルが配置可能になり、エラーが日本語で表示されるようになりました。

sites/default直下にdefault.settings.phpファイルが置いてあるので、そのファイルをコピーし、settings.phpを作成します。

インストール時は書き込みが可能なようにsettings.phpパーミッションを変更します。 後で出て来ますが、インストール完了後はパーミッションを元に戻すのを忘れないように。

とりあえず、 chmod 777 settings.php にします。

DBの設定

f:id:nmta:20171013170934p:plain:w450

データベース(DB)の設定を行います。

f:id:nmta:20171013171147p:plain:w450

使用するDBはあらかじめ作成しておきます。

サイトの環境設定

DBの設定まで完了すればインストールは完了です。 正常に完了すると先ほどのsettings.phpの書き込み権限をなくすよう警告が表示されます。

f:id:nmta:20171013171443p:plain:w450

chmod 644 settings.php

サイトの基本情報を入力し設定は全て完了です。

f:id:nmta:20171013171805p:plain

インストール後

サイトの状態

管理者権限でログインしたら、[レポート] - [サイトの状態]の順に進みます。 ここではサイトの状態を確認することができます。

信頼の置けるホストの設定

settings.phpに使用するドメイン名に合わせて設定を追加します。 詳しくはこちら Trusted Host settings | Drupal.org

localhostの場合、このように書きます。

$settings['trusted_host_patterns'] = [
  '^localhost$',
];