Drupalのモジュール

例えばWordPressの場合、最新バージョンをダウンロード、解凍してサーバーにアップロード、MySQLのデータベースを用意しておいて、インストールが完了すれば、ブログサイトを構築したり、そのままでも十分使えます。

Drupalは他のCMSと違ってモジュールを追加しないと、まず使い物になりません。というかDrupalには、コア部分はできるだけシンプルで軽く、必要に応じてモジュールを追加していくという設計思想があります。

まずは絶対欠かせない3つのモジュールをご紹介しましょう。

Contents Construction Kit(CCK)

入力フィールドをカスタマイズするモジュールです。コアモジュールだと本文入力フィールドだけですが、CCKでテキストフィールド、数値フィールド、他のコンテンツとの関連付けフィールドなど様々な種類のフィールドを追加できます。

またそのフィールドの特性、例えば、テキストフィールドの場合、単純なテキストフィールドとするか、あるいは選択リストとするか、さらに選択リストとした場合、プルダウンリスト、チェックボックス、ラジオボタン、といった設定をすることができます。

CCKの機能の機能をさらに拡張するモジュールが多数あり、画像アップロード、日付入力フィールド、といったフィールドを追加することができるようになります。

Drupalのデフォルト状態ではページ、ストーリーという2つのコンテンツタイプが設定されています。(この2つのコンテンツタイプに大きな違いはなく、概ね投稿者名を表示するかどうかくらいです。)

コアモジュールの設定で、さらにブログ、ブック、フォーラムといったコンテンツタイプを追加することができます。

CCKにより、これらの既存のコンテンツタイプに新しいフィールドを追加することもできますが、フィールド設計の異なる様々なコンテンツ種類を無制限に追加することができます。(但し管理が面倒になるので、コンテンツタイプはできるだけ少なくするのが使いやすいサイト構築のコツだと思います。)

例えば、通常のテキストフィールドとしてメーカー名のフィールドと商品仕様のフィールド、整数値のテキストフィールドとして価格フィールド、商品画像のアップロードフィールドを追加、本文欄は商品説明としたコンテンツタイプ「商品」を設置し、ショッピングサイトの構築ができるようになります。

CCKはDrupal7からコアモジュールのひとつとしてデフォルト機能に含まれることになり、Drupal7では追加インストールの必要がありません。

Views

入力を設計するための最重要モジュールであるCCKに対して、出力を設計するための最重要モジュールがViewsです。簡単に言ってしまうと、データベースに保存されたコンテンツを一覧出力するモジュールです。

Viewsはコンテンツの必要な部分だけを様々な条件でフィルタリングし、ページあるいはブロック(ページの部分)として出力します。

フィルタリングでは、多くのコンテンツから特定の条件、カテゴリ分類(DrupalではTermと呼ばれます)、フィールドの値、コンテンツタイプ、公開/非公開の設定、投稿者名、投稿日付等様々な出力するための条件を設定します。

出力する値はコンテンツ全体(あるいは一部)あるいは特定のフィールドだけを、様々な条件を付けて出力設定することができます。例えばコンテンツへのリンクを組み込んだタイトルだけを出力して、日付順に10件をブロックとして出力し、更新情報一覧を簡単につくることができます。

さらに出力スタイル(テーブル、リスト等)、出力のソート(順位設定、作成日付、更新日付等)、出力件数、ページ設定、パスの設定、閲覧権限の設定、等々、実に微に入り細に入り細かい設定ができるようになっています。

自分の場合、個別コンテンツページとViewsで出力した一覧ページのみでサイト全体を構成するようにしています。

Drupal6ではViews2、Drupal7ではViews3が基本的に適合バージョンとして配布されており、Views3ではViews2より高度な設計ができるだけでなく、若干設計思想が異なっています。また、ViewsはDrupal7でも追加モジュールですが、次のバージョンDrupal8ではコアモジュール化されることになっています。

ImageFieldとImageCache

Drupalで画像のアップロードや管理を至極容易に処理できるようにしてくれるモジュールです。

Drupalで画像処理を行うモジュールには多様なものがあり、以前(Drupal5の初期の頃くらいまで)はImageモジュールで画像自体をひとつのコンテンツとして扱う方法が主流でしたが、その後このImageFieldとImageCacheモジュールの組み合わせが圧倒的に主流となり、Drupal7ではコアモジュール化されました。

ImageFieldはCCKに画像アップロードフィールドが追加できるようになります。ここでアップロードした画像を自動的にキャッシュ(一時ファイル)として処理してくれるのがImageCacheです。

ImageCacheで予め様々な処理をプリセットとして設定しておきます。例えば画像の横幅を200pxに縮小し、さらに画像の中心に対して縦横150pxでトリミングするという設定をしておきます。仮にこのプリセットに対してsquareという名前を付けておきます。

ImageFieldでアップロードした画像に対して、CCK上で適用させたいコンテンツタイプの画像アップロードフィールドに対して、「squareからオリジナル画像へのリンク」が適用されるようにフィールドの出力を設定しておきます。

これでコンテンツを表示すると、正方形の小さな画像をクリックするとオリジナルの大きな画像が表示されるようになります。

このImageCacheは極めてスグレモノで、閲覧者がその画像を含むページにアクセスした時点で初めてキャッシュ画像がプリセット名と同じディレクトリ内に生成されることになります。これで出力テンプレート上ではまだ存在しないキャッシュ画像ファイルへのリンクを組み込んだり、もちろんファイルスペースも節約できることになりむ。

なお、ImageField、ImageCacheの利用にはサーバー上で画像を処理するGDやImage Magicを利用するためのImage APIモジュールが必要になります。同時にインストールしておきましょう。