このチュートリアルでは、Drupal 8 でカスタムモジュールを通じてプログラムでブロックを出力する方法を見ていきます。
コード例は github で見られます:
https://github.com/levmyshkin/drupalbook8
まず、PHP クラスを含むファイルを追加することから始めましょう。これが、カスタムモジュールを通じて Drupal でブロックが作成される方法です。ファイルを作成するプロセスは、ここで行ったページ用のクラスと同じです:
9.3. カスタム Drupal モジュールを作成する。プログラムでページを出力する。
ただし、プラグインを含むファイルを作成する必要があります:
modules/custom/drupalbook/src/Plugin/Block/FirstBlock.php
ルートには URL 内のパラメーターを使えます。それらは Views のコンテキストフィルターとまったく同じように機能します。例えば、URL でさまざまなエンティティの ID、テキスト文字列、あるいはカンマやプラスで区切った連続 ID を渡せます。このレッスンでは、ノードの ID を渡し、そのノードのタイトルと本文をコンテンツに表示します。
コード例は github で見られます:
https://github.com/levmyshkin/drupalbook8
drupalbook.routing.yml モジュールファイルにルートを追加しましょう:
Drupal API を学ぶにつれ、https://api.drupal.org のメインドキュメントを参照することがよくあります。これは自動生成された Drupal のドキュメントです。各関数、クラス、メソッドについてのすべての情報、それらがどこで定義されているか、簡単な説明がどこで使われているかが含まれています。また、このサイトには API ヘルプもあります。各セクションに目を通すことをお勧めします:

Drupal でサイトを開発すると、そこに書かれている各セクションに出会います。
また、単にサンプルを見て同じことをする必要がある場合もあります。そのための examples モジュールがあります:
このレッスンでは、私たちのモジュールの機能を拡張し、登録ユーザーまたは特定のロールを持つユーザーだけが利用できるコンテンツを作成します。
コード例は github で見られます:
https://github.com/levmyshkin/drupalbook8
まず、drupalbook.permissions.yml モジュールフォルダーに新しい YML ファイルを追加することから始めましょう:
access premium pages:
title: 'Access Premium pages'
description: 'A custom permission for your pages.'
restrict access: TRUE
次に、アクセス権ページに移動し、必要なロールに Premium コンテンツへのアクセスを設定します。私は登録ユーザーに対してこれを行います:
/admin/people/permissions
私たちのモジュールの作成を、少し整理することから始めましょう。引き続きカスタムモジュールと contrib モジュールを分けましょう。Drupal ではモジュールは /modules フォルダーにあります。今では /sites/all/modules に深く入れる必要はありません。readme にはそれで動作すると書かれていますが、やはり /modules フォルダーを使ってください。/modules フォルダーの中に、custom と contrib の 2 つのフォルダーを作成します。contrib フォルダーには drupal.org からの追加モジュールを保存し、私たちのカスタムモジュールは custom フォルダーに保存します。
英語字幕:
コード例は github で見られます:
この記事は Drupal に慣れてもらうためのもので、カスタムモジュールを追加した後、さらにコード例を書いていきます。
Drupal は、すべてが完璧で何も変える必要のないモノリシックなシステムではありません。顧客からあれこれの機能をサイトに追加するよう頼まれることは非常によくあります。Drupal のコアコードを維持しつつ Drupal に機能を追加できるように、モジュールを使います。モジュールシステムを使うと、Drupal の機能を拡張できます。しかし、既成の contrib モジュールの機能を拡張する必要がある場合はどうでしょうか?もちろん、drupal.org でイシューを作成して必要な機能の改良をリクエストでき、おそらく 1 か月、2 か月…1、2 年後に、特定のモジュールで必要な機能を得られます。しかし、別の方法で行動し、必要なコードを自分で書くこともできます。Drupal の追加モジュールや Drupal 自体の機能を拡張するために、独自のモジュールでフックとプラグインを使います。
この記事では、コードを書くのではなく、コードを書く準備をします。そのために、Drush をインストールします。Drush はコンソールユーティリティで、Drupal で多くの定型的な操作を実行できます:モジュールの更新、構成のアップロード/ダウンロード、バックアップなど。
開発用の Web サーバーとして Open Server を使っている場合は、この手順が適しています:
1. サーバー自体をインストールします。作者のウェブサイト open-server.ru からダウンロードできます。インストールとドキュメントはそこにあります。
2. Open Server をインストールした後、あるいはすでに Open Server がインストールされている場合は、PATH に Windows 変数を登録する必要があります。
C:\Users\yourUserName\AppData\Roaming\Composer\vendor\bin;C:\OpenServer\modules\php\PHP-5.6;C:\OpenServer\modules\database\MySQL-5.5\bin
これまで分解してきたものはすべて、Drupal の以前のバージョンと同じでした。しかし、開発ではすべてが異なります。見た目上、Drupal は Drupal 7 と同じに見えますが、内部では Drupal は Symfony コンポーネント、独自のコンポーネント、そして多くのライブラリで構成されています。したがって、新しいプラグインシステムを扱い、PHP の OOP を扱う必要があります。
まず、かなり馴染みのある Drupal フックから始め、次に Drupal がページ(ルート)をどう扱うかを理解し、新しいページを追加し、Drupal がリクエストをどう処理するかを検討します。
新しい記事や動画が追加されるにつれ、この導入記事を拡充していきます。
Ubercart のストアでカテゴリーのカタログを持つには、catalog モジュールを有効にする必要があります:

Catalog モジュールを組み込む前に、すぐに Product、Store、Country モジュールを組み込むほうが良いです。
インストール後、商品セクションの辞書 Catalog ができます:
/admin/structure/taxonomy
Ubercart は通常のモジュールとしてインストールされます:

モジュールの最初のブロックはインストールに必須です:
Cart - カートモジュール。
Country - 特定の国用の設定モジュール。
Order - 注文のモジュール。
Product - 商品設定。
Store - ストアのメイン設定。
次は、有効にしてもしなくてもよいモジュールです: