Drupal は柔軟に、そしてダイナミックにWEB サイトに機能を追加したり、カスタマイズを加えることができます。しかしそれでもある程度複雑な機能のウェブサイトを構築しようとすると、カスタマイズしきれない部分というのがいくつか出てきます。要望にマッチしたコントリビュートモジュールを探すのも一つの手ですが、それもなかなか大変です。

フック(※1)の記述場所として、サイトごとに調整用のカスタムモジュールをひとつ作っておくと、対応するフックにわずかなコードを加えるだけで、細かい部分まで対応できるので便利です。

Drupal のモジュールの作成は簡単です。

コア: 
Drupal7

よくある不動産物件サイトを Drupal で構築します(デモサイトはこちら)。内容は「賃貸物件」と「売買物件」の2つに大きく分け、たとえば「賃貸物件」では、所在地や最寄り駅、家賃、築年月、間取りや専有面積といった属性から物件をリストアップし、多数の中から条件にあった物件を探すことができます。

「売買物件」では、新築マンション/一戸建て、中古マンション/一戸建てといった物件タイプ、価格、間取りやその他の属性から物件をリストアップし、同じく多数の中から条件にあった物件を探せます。

家賃(価格)や駅からの距離など、項目によってのソート(並べ替え)も可能です。リストで気に入った物件をクリックすると、その物件の詳細情報ページに移動し、より詳しい情報が表示されます。

システム構築の方針

ここでシステム構築の方針としては、優先度順に

~ Drupal 7 custom node view modes 和訳 ~

Drupal 7 では、新しいクールな機能のひとつとして、ノードの「ビューモード」を簡単に追加出来るようになりました。ビューモードは、コメントなど他のエンティティでも有効なものですが、今回はノードについて取り上げてみたいと思います。

コア: 
Drupal7
~ Rendering Drupal 7 fields (the right way) Computerminds 和訳 ~

フィールドコレクションのテンプレートのカスタマイズで、少しハマったので、メモしておきます。

「賃貸物件(forrent)」というコンテンツタイプのノードに、近くの駅を表示する「アクセス(field_access)」というフィールド(フィールドコレクション)があるとします。「アクセス(field_access)」フィールドコレクションのフィールドには、「駅(field_station)」、「徒歩分(field_walk)」、「バス(field_bus)」があります。「駅(field_station)」は路線の中の最寄り駅、「徒歩分(field_walk)」はその駅から物件まで徒歩何分かかるかを示すフィールド、「バス(field_bus)」はその駅からバスで何分かかるかを示すフィールドです。

複数の路線の駅からアクセス出来る場合もあるので、「アクセス」フィールドの値の数は無制限とします。

コア: 
Drupal7
7 form.inc

batch_set($batch_definition)

バッチ処理を生成します。

パラメータ

$batch_definition: バッチを定義する配列です。以下のキーが使用できます。'operations' だけは必須です。batch_init() はデフォルトのメッセージを提供します。

タグ: 
コア: 
Drupal7
~ Batch operations 和訳 ~

バッチ処理を設定します。

バッチ処理を設定することによって、PHP のタイムアウトによって途中で中断されることなく、一度の送信で複数のページリクエストにわたって処理されるようなフォームの実装が可能になります。処理の間、ユーザーには処理の進捗状況を示すプログレスバーが表示されます。

タグ: 
コア: 
Drupal7
~ Describing tables to Views 和訳 ~

独自のテーブルを Views で使えるようにするには hook_views_data() を使います。hook_views_data() はテーブルの名前をキーに、その情報の配列を返します。例えばモジュールが 'foo'、'bar'、'baz' といった3つのテーブルを Views に伝える必要があるとすると、配列は次のように表現されます。:

コア: 
Drupal7

モジュールは hook_views_data() の実装によって、お互いに自身のテーブルを Views のリレーションシップ、フィールド、フィルター、並べ替えの基準、引数に関連付けすることができます。

タグ: 
コア: 
Drupal7
タグ: 
コア: 
Drupal7