Drupal上の画像や動画の管理ができるMediaを使ってみよう|Media機能①

梅木 和弥
Media 機能の基本的な使い方

Drupalには、標準で画像や動画といったメディアファイルを管理するMedia機能が提供されています。

記事内のフィールドとして使えますし、CKEditor等のWYSIWYGエディタ内でも使えます。
また、Media機能の大きな特徴として1度アップロードしたファイルを使い回して設定できる点が挙げられます。

今回は、そんなDrupalのMedia機能と基本的な使い方をご紹介します。

Media機能について

Drupalに標準で搭載されているMediaモジュールを使うと、画像や動画などのMediaアイテムの作成・編集・削除といった管理ができます。

もちろんMediaモジュールを使用せずに、画像フィールドやファイルフィールドを使ってサイトを構築することもあります。
要件によってはMediaの機能を使用しないこともありますが、画像フィールドやファイルフィールドにはない下記のようなメリットがあります。

  1. 使い回しができる
  2. 標準で5つのメディアソースを管理できる
  3. 独自のサブタイプの作成ができる
  4. オリジナルのメディアソースを追加して管理できる

それぞれ詳しく見ていきましょう。

1. 使い回しができる

1度アップロードしたMediaアイテムは、選択モーダルに一覧として表示されて、使い回しができるようになります。

画像フィールドやファイルフィールドの場合はアップロードして登録するしか方法がないため、複数の記事に同じ画像やファイルを設定したい場合も毎回アップロードしなくてはなりません。

Media機能を使うことでアップロードの手間を省けます。

2. 標準で5つのメディアソースを管理できる

Media機能は下記の5つのメディアソースに標準対応しています。

  • 画像(Image)
  • 動画(Video)
  • 外部動画(Remote video)
  • ドキュメント(Document)
  • オーディオ(Audio)

「外部動画」というのはYouTubeやViemoなどの動画サイトにアップロードされた動画のことで、URLを登録して登録・管理します。

3. 独自のサブタイプの作成ができる

Media機能を使えば使い回しができると言っても、過去にアップロードしたファイルがすべて表示されていると、その中から目的の画像を探すのは面倒かもしれません。

しかし、Media機能はコンテンツタイプと同じようにサブタイプを作成してフィールドを設定できます。

  • 「ギャラリー用画像」サブタイプを作成して、ギャラリー用の画像を管理する
  • 「YouTube動画」サブタイプを作成して、動画を管理する
  • 「お気に入り」サブタイプを作成して、よく使い回す画像を管理する

このようにサブタイプを設定すれば、Mediaアイテムを管理しやすいように整理できます。

4. オリジナルのメディアソースを追加して管理できる

コントリビュートモジュールの開発が必要になってしまいますが、オリジナルのメディアソースを追加して管理もできます。

例えば、TwitterやInstagram、外部サイトなどよく使うメディアソースを追加して、Media上で管理できるように追加できます。

Media機能の実装方法

それでは次にMedia機能を実装してみましょう。
今回は、画像を記事内で使用する方法について紹介します。

モジュールのインストール

まずはモジュールのインストールからです。
Drupalの管理画面メニューの[管理]→[機能拡張]を選択します。

一覧ページに下記2つのモジュールがあるので、それぞれ有効化します。

  • Media:メディア機能の提供
  • Media Library:既存のメディアアイテムを選択しやすいUIを提供

どちらもコアで提供されているモジュールですが、標準では有効化されていません。
チェックを入れてページ最下部の「インストール」をクリックすれば有効化完了です。

管理メニュー内「機能拡張」タブを選択する。「Media」「Media Library」モジュールのチェックボックスにチェックを入れる。

Mediaのアップロード

実は先ほどのモジュール2つをインストールするだけで、Mediaの管理機能は実装されています。
実際にMediaアイテムを追加して確認してみましょう。

Drupalの管理画面メニューの[管理]→[コンテンツ]→[メディア]を選択します。
Mediaアイテムの一覧画面が表示されるので「メディアを追加」ボタンをクリックします。

メディアを追加するには、管理メニュー「コンテンツ」タブ内の「画面上部」の「メディア」タブを選択し、その下の「メディアを追加」ボタンを選択する。

次に、メディアタイプの選択画面が表示されます。
この記事では「画像(Image)」のみの紹介ですが、それ以外にもオーディオ(Audio)や動画(Video)の登録もできます。

今回は画像をアップロードするので「Image」を選択します。

「Image」を選択。

Imageの追加画面が表示されるので「ファイルを選択」から画像をアップロードして保存します。

「ファイルを選択」ボタンから画像をアップロードする。

保存ができたら、[管理]→[コンテンツ]→[メディア]でアップロードした画像が一覧として表示されているのが確認できます。

アップロード後の確認画面。

ちなみにアップロードしたMediaアイテムの削除や編集をしたい場合は、1番右に表示されている「編集」ボタンから操作できます。

Mediaフィールドタイプを追加する

Mediaの管理機能について確認できたので、次は記事内でMediaを使用する方法についてです。

記事内でMediaを使用するためには、コンテンツタイプの設定が必要になります。
今回はDrupalをインストールしたときにデフォルトで用意されている「記事」コンテンツタイプにフィールドを追加します。

[管理]→[サイト構築]→[コンテンツタイプ]で「記事」の右に表示されている「フィールドの管理」ボタンをクリックします。

管理メニュー内「サイト構築」タブを選択する。「コンテンツタイプ」を選択する。

「記事」コンテンツタイプのフィールドが表示されますが、デフォルトで設定されている「画像(field_image)」フィールドは機能が被ってしまうため、削除しておきましょう。

標準で用意されている画像フィールドを削除する。

デフォルトの画像フィールドを削除できたら、「フィールドの追加」ボタンをクリックします。

「フィールドの管理」タブからフィールドを追加する。

「新しいフィールドの追加」で「メディア」を選択します。
あとはラベル名を入力して「保存して次へ」ボタンをクリックします。

フィールドタイプは「メディア」。

このままでは、画像以外の他のメディアタイプもアップロードできてしまうので、画像のみアップロードできるように制限します。

フィールドの編集画面の「参照タイプ」内の「メディアタイプ」で「Image」を選択して保存しましょう。

フィールドの編集画面内の、参照タイプタブ内の設定。メディアタイプの項目にて、「Image」チェックボックスにチェックを入れる。

これでフィールドタイプの追加は完了です。

記事内でMediaを使用する

フィールドタイプを追加できたので、実際に記事内でMediaが使えるか確認してみましょう。

[管理]→[コンテンツ]で「コンテンツを追加」ボタンをクリックし、記事を新規作成します。
ここでMedia 参照フィールドが追加されているのが確認できます。

記事の新規作成の画面。定義したメディアのフィールドの表示が確認できる。

タイトルとコンテンツを入力し、「メディアを追加」ボタンをクリックします。

「メディアを追加」選択後の画面。モーダルにて画像ファイルがアップロードできる。

モーダルが表示されるので「ファイルを選択」から画像をアップロードできますし、1度アップロードしたMediaアイテムは、その下に一覧として表示されるのでそこから選択することもできます。

投稿した記事の表示を確認してみると、下記の通り問題なく画像が表示されています。

投稿した記事の表示確認。アップロードした画像ファイルの表示が確認できる。

まとめ

今回はDrupal標準で提供されているMedia機能について紹介しました。
画像に限った説明となりましたが、他にもYouTube等の外部動画やオーディオファイル、動画ファイルなども管理できます。

また、今回はコンテンツタイプにMediaフィールドを定義する方法でしたが、ブログ記事などの本文内でMediaを使いたい場合もあると思います。

次の記事ではDrupalのWYSIWYGエディターである「CKEditor」内でMediaを使用する方法についてご紹介します。

次の記事は近日公開予定です。

梅木 和弥/ Drupalエンジニア

主にDrupalの構築・開発に携わっています。
最近はバックエンド開発に力をいれており、先輩方のコードレビューから知識と洞察を吸収しています。 好きなDrupalモジュールはFlagです。

休みの日はカフェでのんびりと過ごすことが多いです。

梅木 和弥 の書いた記事一覧

最新の関連記事

Ranking

Category

Tag

Contact お問い合わせ

Drupalでの開発・運用、サーバー構築、Webサイト構築全般、制作費用などに関してお気軽にご相談ください。