Drupalのコアモジュールと画像関連モジュール

以前も書いたようにXOOPSにはホントお世話になりました。何度インストールしたか分らないくらいです。しかし、XOOPS JP 2.0.16aを最後に本家と別れ日本語版はXOOPS Cubeになりました。それまで愛用させてもらった数々のモジュールも使えるのか使えないのか・・・例えば、かなりベーシックなモジュールでもあるフォーマットに左右されずオリジナルでコンテンツを組み込むためのモジュールtinyDは、Cube向けにPicoというモジュールに進化しています。

画像を簡単にアップロード、整理、見やすく表示できるMyAlbum-P、メニューを簡単にカスタマイズし階層化できるmultiMenu、メールフォームのinquiry・・・こういったお世話になってきたモジュールは上書きで使えるのかどうか・・・?

Cubeのインストールもしてみました。これまでデフォルトで入っていたnewsやcontactなど使えないモジュールが全廃されているのはナットクとしても、互換性を考慮してのことなのか、文字コードは依然としてEUC ┐(´-`)┌
別途サードパーティによるUTF版もあるようですが、今後のアップグレードを考えると基本のシステムをサードパーティ版でという気にはなれません。モジュールも何が使えるのかもよく分らず、悩んだあげく、長らくお世話になったXOOPSではあるものの、Cubeはバージョンアップというよりも新規のCMSのようなものと自分なりに判断、なら、他にもっといいオープンソースCMSがあるのでは、ということで行き着いたのがDrupalです。

デモサイトを作ったりしてDrupal(バージョン5.7)の基本的な部分ついて、自分の備忘録的に、何回かに分けてまとめ見たいと思います。

システムとして基本的な機能もコアモジュールとしてモジュール化されている

必須コアモジュールとしてモジュールの使用そのものを制御できないのはBlock、Filter、Node、System、User、Watchdogの6つだけです。Blockはヘッダーやフッターを含めてコンテンツをブロック化、Filterはそのコンテンツの表示をフィルタリング、Nodeはコンテンツそのものの作成と管理、Systemはサイトの基本設定、Userはユーザー管理、Watchdogはログ管理です。

この他に任意のコアモジュールとして、20個強が用意されており、Blog、Forum、Menu、Taxonomy、Uploadなどベーシックなものも含まれています。Blogはユーザー単位でブログを構築、Forumは掲示板、Menuはユーザー毎にアクセス権限におうじてコンテンツへのリンクを一覧表示、Taxonomyはコンテンツの分類、Uploadはコンテンツ投稿の際のファイル添付機能を実現するモジュールです。

Blogにせよ、Forum(掲示板)にせよ、投稿のインターフェースは同一で、これは必須コアモジュールのNodeによるものです。例えばUploadモジュールを有効化すると、BlogやForumにもファイルアップロード機能が同じインターフェースで提供されることになります。

必須コアモジュール以外を有効化しないと、コンテンツを作成できるのは「ストーリー」と「ページ」だけになります。「ストーリー」は結局はブログと同じもので、Blogモジュールがユーザー別なのに対して、サイトのルートになるブログ、「ページ」はWordPressのページと同様、日付のないコンテンツと解釈していいかと思われます。

いずれも投稿のためのインターフェースはNodeモジュールによるもので共通化されています。「ノードとはDrupalの基本的なデータの単位で、コンテンツタイプによらず一元管理できることがDrupalの強み」とヘルプページにまとめられています。

コンテンツに画像を組み込むのはImageモジュールで

Uplaodはファイルアップロード用なので、画像表示には不適です。ブログなどのコンテンツに画像を組み込むには、コアモジュールには含まれていないImageモジュールをダウンロードしmoduleディレクトリにアップします。Imageモジュールは本体の他、attachやgallery、importなどのモジュールとセットになっています。このうちattachで画像の表示もできるようですが、複数の画像が表示できるImage assistモジュールが便利です。別途ダウンロードしmoduleディレクトリにアップします。

管理セクション>サイト構築>モジュールを開くと、「画像」という名前でImage関連のモジュールのまとめリンクが自動的に生成されており、これを開きそれぞれのモジュールを有効化します。それぞれのモジュールの説明欄にモジュールの依存関係が表示されているのはとても親切な設計だと思います。

このImageモジュールで作成するデータもひとつのコンテンツ、例えばブログに組み込む画像自体も一つのNodeとしてコンテンツ化されることになります。初期状態だと、フロントページには全てのコンテンツが一覧表示されるので、例えばブログに画像を組み込むと、画像が組み込まれたブログ記事と画像だけのコンテンツが並んで表示されることになります。これはみっともない・・・

この辺がWordPressやMovableTypeなどのブログシステムと大きく異なる点で、最初これはどうすればいいのか、結構悩みました。要はそれぞれのコンテンツをフロントページに表示するかを制御することで解決します。

この辺の詳細は次回に・・・