Drupal Modules

気になるモジュールについてのメモは、今まで Evernote で管理してきたんですが、せっかくだったら皆さんとも共有したいと考え、このページを作りました。主に、FOREST & trees の岩田がよく使ったり気になったりするモジュールを記録していきます。

Administration Menu

Description: 

Mac OS X や Windows などの現代的オペレーティングシステムのインターフェースと同様、Drupal サイト管理のためのプルダウンメニューを提供してくれる。

»

Panels

Description: 

Drupal が書き出す「ページ」の概念を根底から覆すモジュール。

通常、Drupal が書き出すページは1つのコンテンツか、Views が書き出した「複数コンテンツのリスト」。複数コンテンツを表示させた場合には、それらの配置をカスタマイズするのはなかなか難しい。サイドバー、フッターなどいろんなリージョンにブロックを配置したりできるけれど、それだけ。ブロックはパスを元にした argument (*1) を受け取れないので、Views で arguments を使うよう設定していても、その arguments の受け渡しが非常に難しい。

Panels では、ページを複数のエリア (*2) に区切って、そのエリア毎にノードを割り当てたり、ブロックを割り当てたりといったことが可能になります。そのエリアに配置したブロックに argument を引き渡すことも可能なので、現在のページの内容に応じてダイナミックに変化するブロックの配置が簡単にできるようになります。また、そのページにアクセスしているユーザーのロールなど、いろいろな条件に応じて内容を書き換えることも可能です。

このように、Panels はすごく複雑なロジックに基づいてページの内容を書き出すことができる、とても高機能なモジュールです。

»

Context

Description: 

一つのサイトを複数の「コンテクスト(=セクション)」に分けて、どういう条件のときに、どのコンテクストが有効になって、そのコンテクストでどういう設定が返されるか、ということを可能にする。

たとえば、CCK で追加したコンテンツタイプをある view でリスト表示し、その view をプライマリーメニューに登録した場合。このとき、view をクリックすると、そのメニューアイテムがハイライトされるよう CSS などで設定できるけれど、コア + CCK + Views だけだと、そこまで。view 内の任意のノードをクリックすると、そのハイライトは失われてしまう。

これは、その view および view にリストアップされるノードのパスを条件としたコンテクストを作ることで解決できる。

この、「CCK によって作成された任意のコンテンツタイプを、任意のメニューアイテムと関連づける」というのは Context モジュールの機能の一つに過ぎなくって、条件、アクションともにもっと多くの選択肢がある。

»

Custom Breadcrumbs

Description: 

breadcrumb というのは、日本語で「パンくず」と呼ばれているもの。複雑な構造を持ったサイト内で、現在地がどこなのかをサイトトップから順位示してくれるものだ。

Drupal のコアだけを使っていると、それほど問題にはならないのだけれど、必須モジュールのひとつである CCK を使うと困ることが一つある。CCK および Pathauto はこのパンくずの情報を提供してくれないので、CCK で作った全てのコンテンツタイプがサイトトップ直下に横並びに配置されてしまうんだ(*1)。そのため、サイトにブレッドクラムが配置してある場合、CCK で作成したノードは、「ホーム > コンテンツ1」「ホーム > コンテンツ2」...「ホーム > コンテンツn」というふうになってしまう。

»

Content Construction Kit (CCK)

Description: 

Drupal コアをインストールした状態では、新たにコンテンツタイプを追加できるといっても、そのコンテンツタイプに持たせられるフィールドはタイトル(title)と本文(body)だけ。一応フィールド名を変えられるけれど、そんなの何の役にも立ちやしない。

CCK を使うことで、ラジオボタンやセレクトリスト、ほかのノードの参照など、さまざまなタイプのフィールドを利用できるようになる。それだけじゃなく、CCK は API がしっかり設計されているので、CCK 用フィールドが数多く開発・公開されていて、これらを利用することも可能になる。

Drupal で本格的にサイトを構築しようとしたら必須のモジュール。

»