Drupal Advent Calendar 2018の19日目の記事になります。

スタジオ・ウミに入ってからの初投稿になります! 入社して1ヶ月が経ち、まだまだ知らないことは多いですが、ブログを書いて理解を深めていけたらと思います。 今後もDrupalに関して学んだことを投稿していきたいと思いますので、よろしくお願いいたします。

以下、目次になります。

  1. はじめに
  2. Groupモジュール
  3. 使ってみよう
  4. まとめ

はじめに

今回はGroupモジュールについて紹介したいと思います。

ただ紹介するだけでなく、実際に手を動かしながら進める内容にしておりますので、Drupal8の実行環境をご用意ください。

Groupモジュール

この節では、Groupモジュールについての概要と導入について説明します。

概要

ユーザーのグループを作成し、グループごとにコンテンツへのアクセス制御をする際に便利なモジュールです。用途としては、組織内のコミュニティサイトの作成です。

グループはグループタイプというもので分けることができます。これにより、グループ間のアクセス制御が設定できます。

グループに属しているユーザーをメンバーと呼びます。メンバーは、管理メンバーとそうでないメンバーに分かれています。グループ間だけでなく、グループ内のメンバーにもコンテンツの参照・編集・削除の権限制御が可能です。

大学を例に挙げますと、工学部と農学部があり、それぞれに学科があるとします。

グループタイプに関しては、工学部、農学部が該当し、グループは情報学科、機械学科、環境学科、生物学科が該当します。

メンバーに関しては、情報学科に属する教員・学生が該当するかと思います。中でも学科長は管理メンバーになるかと思います。

コンテンツに関しては、工学部の人が作ったお知らせのコンテンツを他の学部の人へは閲覧できるようにし、内部資料のコンテンツは非公開とするようなことが考えられます。

導入

モジュールをインストールする操作については、「Drupal のモジュールのインストール方法」の記事が参考になります。また、Drupalのモジュールの種類についても説明されていますので、ぜひご覧ください。

Groupモジュールはコントリビュートモジュールなので、導入には次の手順が必要になります。

  1. モジュールファイルをダウンロード
  2. モジュールのインストール(有効化)

先ほど紹介した記事ですと、Drupal.orgからモジュールファイルをダウンロードしてインストールする操作が紹介されていましたが、コマンドでも同じことが可能です。

# Drupalプロジェクトのディレクトリにカレントディレクトリを移す
cd /path/to/DrupalProjectDir

# Groupモジュールをダウンロード
# ※Drupal8ですと、ダウンロードは、drushではなくcomposerで行う必要があります。drushで実行すると非推奨という警告が出ます。
composer require drupal/group

# GroupモジュールをDrupalへインストール (同梱されているGroup Nodeモジュールもインストールしておく)
drush en group
drush en gnode

Drupal管理画面の機能拡張ページにて、モジュールがインストールされていることを確認できます。次の画像のようにチェックボックスにチェックがされている状態です。

また、有効にすることで管理メニューにグループの項目が追加されます。ここ押下するとグループの管理画面へ遷移します。

使ってみよう

この節では、Groupモジュールを用いて前節で挙げた大学の例を構築してみたいと思います。

例題

構築するものについて見てみましょう。

前節の例では、工学部と農学部があり、それぞれに2つの学科がある場合でしたが、今回はデモですので簡略化して、情報学科に学科長Xと学生X、農学部に学科長Yと学生Yがいる場合を考えます。

手を動かす前に...

一度整理して、やらなければならないことをまとめましょう。

  • グループタイプ(工学部、農学部)を作成
  • グループ(情報学科、生物学科)を作成
  • ユーザー(学科長XとY、学生XとY)を作成
  • メンバー登録
  • コンテンツタイプ(お知らせ、内部資料)を作成
  • 権限の設定

グループタイプを作成

グループの管理画面のグループタイプ一覧(/admin/group/types)を開きます。

グループタイプのタブを選択して、Add group typeボタンを押下します。するとフォームが表示されるので下に示すキャプチャ画像のように記入してSave group typeボタンを押下します。

グループを作成

グループの管理画面(/admin/group)を開きます。

グループの追加ボタンを押下すると、まずは作成するコンテンツタイプを選択する画面が表示されます。

下に示すキャプチャ画像では情報学科グループを作成している例なので、工学部を選択しています。

すると、グループ名とURLエイリアスを記入するフォームが表れるので、グループ名には「情報学科」、URLエイリアスには「/department/informatics」と記入します。

URLエイリアスを定義することによって、アクセスする際に、URLのパス部に/department/informaticsと入れるとグループのページにアクセスできます。

ユーザーを作成

ユーザー追加画面(/admin/people/create)を開きます。

今回はユーザー名とパスワードだけ記入するだけでよいです。

メンバー登録

先ほど作成した情報学科グループのページ(/department/informatics)を開きます。

情報学科グループに学科長Xと学生Xをメンバーに登録します。

まずは、membersタブをクリックすると、メンバーの一覧が表示されます。まだ1人も登録していないため、空の状態です。Add memberボタンを押下すると登録フォームが表れます。

続いて、登録するユーザー名等を記入していきます。

ユーザー名の項目は、記述途中にユーザー名の候補を示してくれるので、そちらで選択しましょう。

今回はURLエイリアスは未記入でよいです。学科長の場合は管理者の項目にチェックを入れます。

一通り記入ができたら保存ボタンを押下します。

コンテンツタイプを作成

コンテンツタイプ一覧(/admin/structure/types)を開きます。

フォームにコンテンツタイプ名を記入して。保存後にフィールドの管理画面へ遷移しますが、こちらは特に設定せずともよいです。

権限の設定

グループの管理画面のグループタイプ一覧(/admin/group/types)を開きます。

はじめに、各グループタイプに利用するコンテンツタイプの関連付けをします。

グループタイプ一覧の右側にあるメニューを開き、利用可能なコンテンツの設定を選択します。下のキャプチャ画像の赤枠内にあります。

すると、グループで利用するコンテンツタイプを有効化(ボタンのラベルにはインストールと書かれています)をします。

内部資料とお知らせのインストールボタンを押下します。

次に、権限の設定をします。グループタイプ一覧の右側にあるメニューを開き、権限の編集を選択します。

すると下のキャプチャ画像のような画面が表示されます。

赤枠に示した箇所は役割名です。役割ごとにグループのページへアクセスやグループコンテンツの作成権限などを制御できます。

(ところどころ英語と日本語が混ざっている箇所が見られますが、ここは完全にはローカライズ対応できていないためです)

ここに表示されている役割名について言及しておきます。簡単に表にまとめました。

役割名 意味
管理者 グループの管理メンバー(登録の際に管理者にチェックを入れたメンバー)
MEMBER グループのメンバー
部外者 Drupalのアカウントは持っているけれども、対象のグループには属していないユーザー
匿名 Drupalのアカウントを持っていないユーザー

前置きが長くなりましたが、権限の設定をしていきます。

表に設定する項目と役割のみを抜粋しました。「x」としているところにチェックを入れてください。空白の場合はチェックを入れないでください。

今回は管理メンバーにコンテンツの追加・編集・削除・閲覧の権限を与えて、管理メンバーではないメンバーには閲覧のみの権限を与えるようにしました。

項目名 メンバー 管理者
グループを表示 x x
グループノードの一覧にアクセス x x
Entity: Add content entities x
Entity: Delete any content entities x
Entity: Delete own content entities x
Entity: Edit any content entities x
Entity: Edit own content entities x
Entity: View content entities x x
Entity: View unpublished content entities x

以上で設定は完了です。

最後に権限の確認をしたいと思います。

学部長Xでログインして、情報学科のページにアクセスしてコンテンツを作成します。そして、サイトのトップページに行くとコンテンツが表示されています。

2つのコンテンツを投稿して見ました。文章は例です。

次に、学部長Yでログインして、サイトのトップページに行くと学部長Xが投稿したコンテンツが一覧に表示されていないことを確認します。

まとめ

説明が長くなってしまいましたが、いかがでしたでしょうか。

DrupalのGroupモジュールについてと利用方法を簡単に紹介いたしました。

繰り返しになりますが、Groupモジュールは、ユーザーのグループを作成し、グループごとにコンテンツへのアクセス制御が実現できるモジュールです。便利なモジュールなので実際に利用されている方も多いのではないでしょうか。

小〜大規模なサイトまで利用場面がありそうですので、使えるようになって損はないと思います!