カテゴリリストの作成

物件のカテゴリリスト(タクソノミーターム一覧)を作成します。ここでは、前回作成したタクソノミータームページへのリンクと、それぞれの階層下に登録されている物件の件数を表示します。

物件のカテゴリは、所在地で分類するもの(「エリアから探す」ボキャブラリ)と、路線・駅で分類するもの(「沿線から探す」ボキャブラリ)をこれまでに作りましたが、ここでは例として、「エリアから探す」ボキャブラリのカテゴリリストについて説明します。

ここで作成するカテゴリリストは、「エリアから探す('/forrent/area')」ディレクトリのカテゴリリストページに、ブロックとして配置します。

ビューの作成

カテゴリリストも Views で作成します。Views の管理ページ(「管理」 > 「サイト構築」 > 「Views」)にアクセスし、左上の「Add new view」をクリック。

View name に「ターム一覧 - エリアから探す」、システム内部名称に「area_term_list」と入力、「表示」のところには、「タクソノミーターム」 of type 「エリアから探す」となるように選択。「Create a page」のチェックを外します。「Create a block」にチェックを入れ、ブロックのタイトルに「ターム一覧 - エリアから探す」、Display format は「Grid」 of 「Fields」となるように選択、Items per page は「0」と入力します。この設定で、「Continue & edit」をクリック。

ビューの編集画面です。まずブロックの名前を指定します。真ん中「Block name」のところに「ターム一覧 - エリアから探す(県)」と入力します。このブロックは階層の最上位「県」の一覧を表示します。画面右上「保存」ボタンをクリックして、ビューの設定を保存してください。

ブロックの設定

ブロック管理ページ(「管理」 > 「サイト構築」 > 「ブロック」)にアクセスすると、今作成したブロック(ターム一覧 - エリアから探す(県))が見つかると思います。リージョンに「コンテンツ」を選択し、ページ下の「ブロックの保存」ボタンをクリックします。

「ターム一覧 - エリアから探す(県)」ブロックは「コンテンツ」のところに移動しました。続いてこのブロックを表示する条件を設定します。ブロックの「設定」をクリック。

「ブロックのタイトル」に「<none>」と入力、スクロールしたところの「特定ページでのブロック表示」は、「以下のページのみ」にチェックを入れ、テキストエリアには「forrent/area」と入力します。これは「県」のリストを表示するブロックなので、'/forrent/area' のページにのみ、表示するということです。ブロックのタイトルは表示しません。この設定で、ページ下「ブロックの保存」ボタンをクリック。

'/forrent/area' のページにアクセスすると、「エリアから探す」ボキャブラリのタクソノミータームがすべて表示されました。ここは前回、カスタムタクソノミーページの作成で、「何も表示しない」ように設定したところです。

ビューの編集

ここでは「県」のタームだけを表示させたいので、ブロックのビューを編集します。その前に、ビューの動作の概観を簡単に説明します。まず、「エリアから探す」ボキャブラリのタクソノミータームの階層は以下のようになっています。

※図が表示されない場合は、ブラウザを最新版にしてください。

このビュー(ブロック)で表示させたいのは、「県」のタームです。これに、登録されている物件の件数を表示します。物件ノードが実際に登録されているのは、「町村」のタームです。なので、ここでは「町村」のタームを基準とし、これに登録されているノードを関連付け、自身の親の親にあたる、「県」のタームを表示するようにします。

リレーションシップの設定

ブロック部分右上の「Edit view」をクリックして(図7)、ビューの編集画面に入ってください。

ビューの編集画面です。まず必要なデータの関連付けを行います。右側の「Advanced」のところをクリックして開き、「RELATIONSHIPS」の「追加」ボタンをクリック。

「RELATIONSHIPS」の追加画面です。For に「All displays」が選択されているのを確認、フィルターは「タクソノミーターム」を選択します。「タクソノミーターム: Content with term」の項目を探してチェックを入れ、「Apply (all displays)」ボタンをクリック。

「タクソノミーターム: Content with term」の設定画面です。デフォルトで Identifier に「ノード」と入力されていると思いますので、そのまま「Apply (all displays)」ボタンをクリックします。

次に「県」のタームにつなげるための、「市区」のタームを関連付けます。もういちど、「RELATIONSHIPS」の「追加」ボタンをクリック(図8)。

「RELATIONSHIPS」の追加画面です。For に「All displays」が選択されているのを確認、フィルターは「タクソノミーターム」を選択します。「タクソノミーターム: 上位の分類用語」の項目を探してチェックを入れ、「Apply (all displays)」ボタンをクリック。

「タクソノミーターム: 上位の分類用語」の設定画面です。Identifier には「親」と入力し、「Apply (all displays)」ボタンをクリックします。

次に、このブロックで実際に表示する、「県」のタームを関連付けます。もういちど、「RELATIONSHIPS」の「追加」ボタンをクリック(図8)。

「RELATIONSHIPS」の設定画面に入ったら(図11)、もう一度、「タクソノミーターム: 上位の分類用語」の項目を探してチェックを入れ、「Apply (all displays)」ボタンをクリックします。

「タクソノミーターム: 上位の分類用語」の設定画面です。Relationship に「親」を選択、これで、基準となる「町村」タームの、親の親である、「県」のタームを関連付けたことになります。Identifier に「親1」と入力して、「Apply (all displays)」ボタンをクリックしてください。

フィルターの設定

次にフィルターをいくつか追加します。一つ目は、基準となるターム(町村)だけをリストアップするフィルタです。これには、そのタームの「親の親」が存在するかどうかで判断することにします。

FILTER のところの「追加」をクリック。

FILTER の追加画面です。For に「All displays」が選択されているのを確認、フィルターは「タクソノミーターム」を選択します。「タクソノミーターム: Term」の項目にチェックを入れ、「Apply (all displays)」ボタンをクリック。

「Configure extra settings for filter criterion タクソノミーターム: Term」の画面ではそのまま「Apply and continue」ボタンをクリックします。

「タクソノミーターム: Term」の設定画面です。Relationship には「親1」を選択、Operator は「is not empty(NOT NULL)」にチェックを入れ、「Apply (all displays)」ボタンをクリックします。これで、「親の親」が存在するターム(つまり最下位である「町村」ターム)のみがリストアップされるようになりました。

次に、タームに登録された物件をカウントするのに、「掲載」に設定されたものだけをカウントするようにします。FILTER のところの「追加」をクリックし(図14)、FILTER の追加画面では、For に「All displays」が選択されているのを確認、フィルターは「コンテンツ」を選択、「コンテンツ: 掲載」という項目を探してチェックを入れ、「Apply (all displays)」ボタンをクリックします。

「コンテンツ: 掲載」の設定画面です。掲載のところで「はい」にチェックを入れ、「Apply (all displays)」ボタンをクリックします。

「コンテンツ: 掲載」のフィルターが追加されました。しかしこのままでは、ノードが登録されたタームしか表示されません。登録物件が 0 のタームも表示させるようにするため、もうひとつ、コンテンツのフィルターを追加します。

FILTER のところの「追加」をクリックし(図14)、FILTER の追加画面で、こんどは「コンテンツ: Nid」という項目を探してチェックを入れ、フィルターを追加してください。

「コンテンツ: Nid」の設定画面では、Operator に「is empty (NULL)」を選択し、「Apply (all displays)」ボタンをクリックします。

次にさきほどの「コンテンツ: 掲載 (はい)」と「コンテンツ: Nid (empty)」のフィルターをグループ化して、OR(または)という条件を設定します。

FILTER CRITERIA の「追加」ボタンのところから、「and/or, rearrange」をクリックします。

「Rearrange filter criteria」の画面です。左上「Create new filter group」をクリックしてグループを追加し、ノードのフィルタ一2つをそこに持ってきます。そのグループの Operator は「または」を選択します。その設定で「Apply (all displays)」ボタンをクリック。これでフィルタの設定は完了です。

コンテキストフィルターの設定

次にコンテキストフィルターの設定をします。ここでのコンテキストフィルターは、URL からの引数によって、動的にリストのフィルタリングを行うことの他に、FIELDS のところで、リンクを構築するための文字列を取得する働きをします。

CONTEXTUAL FILTERS の「追加」ボタンをクリック。

CONTEXTUAL FILTERS の追加画面です。For に「All displays」が選択されているのを確認、フィルターは「Global」を選択します。「Global: Null」の項目にチェックを入れ、「Apply (all displays)」ボタンをクリック。

「Global: Null」の設定画面です。このコンテキストフィルターはクエリには影響しません。単に FIELDS のところで、リンクを構築するための文字列を取得するのに使用します。WHEN THE FILTER VALUE IS NOT AVAILABLE(引数がない場合の設定)では「Provide default value」にチェックを入れ、タイプは「Raw value from URL」、Path component は「1」を選択します(※1)。スクロールして「続き」フィールドセットのラベルをクリックして開き、「Administrative title」のところに「Global: Null: コンテンツタイプ」と入力します。「Apply (all displays)」ボタンをクリック。このブロックのビューでは、コンテキストフィルターの設定はこれだけです。

表示フィールドの設定

ビューの編集画面の左側「FIELDS」のところにはデフォルトで「タクソノミーターム: 名前」が入ってると思います。これを基準となるタームの「親の親」を表示するようにします。「FIELDS」の「タクソノミーターム: 名前」をクリック。

Relationship には「親1」を選択、「Link this field to its taxonomy term page」のチェックを外し、「Apply (all displays)」ボタンをクリック。ここまでで一旦、表示を確認してみましょう。

ビューの設定を保存して、'forrent/area' にアクセスしてください。基準となるターム(町村)の「親」の「親」が、基準となるタームの数だけ表示されています。デフォルトのタクソノミータームへのリンクは外したので、リンク無しのテキストのみとなっています。これは後で、カスタムのリンクを設定します。

次に、タームに登録されている物件の件数を追加します。ビューの編集画面に戻ったら、まず件数のカウントができるよう、右下 OTHER のところの「Use aggregation: いいえ」のところをクリック、設定画面で「Aggregate」にチェックを入れます。

表示フィールドに、ノードの件数を追加します。FIELDS の「追加」をクリック。

For に「All displays」が選択されているのを確認、フィルターは「コンテンツ」を選択します。「コンテンツ: Nid」の項目を探してチェックを入れ、「Apply (all displays)」ボタンをクリック。

グループ化の設定です。Aggregation type に「回数」を選択し、「Apply and continue」ボタンをクリック。

「コンテンツ: Nid」の設定画面です。Create a label のチェックを外し、Exclude from display にチェックを入れます。接頭語に「(」、接尾語に「)」と入力し、「Apply (all displays)」ボタンをクリックします。

次に、リンクを生成するための材料として「タクソノミーターム: パスに使用する名前」を追加します。FIELDS の「追加」をクリックし(図28)、「タクソノミーターム: パスに使用する名前」を追加します。

グループ設定は、デフォルトのまま「Apply and continue」ボタンをクリックします。

「タクソノミーターム: パスに使用する名前」の設定画面です。Relationship に「親1」を選択、Create a label のチェックを外し、Exclude from display にチェックを入れます。あとはデフォルトのまま「Apply (all displays)」ボタンをクリックしてください。

もうひとつ、リンクを生成するための材料として「タクソノミーターム: ターム ID」を追加します。FIELDS の「追加」をクリックし(図28)、「タクソノミーターム: ターム ID」を追加します。グループ設定はデフォルトのまま、「タクソノミーターム: ターム ID」の設定画面では、Relationship に「親1」を選択、Create a label のチェックを外し、Exclude from display にチェックを入れます。Thousands marker は「-なし-」を選択し、あとはデフォルトのまま「Apply (all displays)」ボタンをクリックします。

材料がそろったら、これらのフィールドの順番を修正します。FIELDS の「追加」から「rearrange」をクリック。

最初の「(親1) タクソノミーターム: 名前」を、一番後ろに持ってきます。これが実際に表示されるフィールドです。この設定で、「Apply (all displays)」ボタンをクリック。

ビューの編集画面に戻ったら、もういちど、FIELDS の「(親1) タクソノミーターム: 名前」をクリックします。

「(親1) タクソノミーターム: 名前」の編集画面です。スクロールして REWRITE RESULTS のフィールドセットを開きます。Rewrite the output of this field にチェックを入れ、テキストに「[name] [nid]」と入力します。Output this field as a link にチェックを入れ、Link path に「!1/area/[field_path_name]」と入力します。ここで「!1」のところは、さきほどのコンテキストフィルターの1つめの値に置き換えられます(この場合は「forrent」となります)。この設定で、「Apply (all displays)」ボタンをクリック。

ビューの編集画面に戻ったら、画面右上「保存」ボタンをクリックして、ビューの設定を保存してください。

'forrent/area' にアクセスすると、最上位「千葉県」のタームが、階層下のタームに登録されている、物件の件数とともに表示されました(※このデモサイトでは、「県」のタームは「千葉県」1つだけですが、他にも作成すれば、ここに表示されます)。クリックするとカスタムのタクソノミーページ('forrent/area/chiba')に移動します。


※1 Path component は、ビューがブロックの場合に設定できます。表示されているページのパスをスラッシュ('/')で区切り、1から数えて「〇番目」というように指定します。このビューの場合、ブロックは、'forrent/area'(と 'forsale/area')のページに表示するので、ここで「1」を指定すると 'forrent'(もしくは 'forsale')という値が対象となります。