Drupalで、タクソノミーを活かした、Tree状のカテゴリBlockを作成する方法を、備忘録も兼ねてまとめておきます。目指すのはこんな感じ↓
StructureにてViewsを選択する。当然Viewsモジュールはインストールしておくこと。ちなみにDrupalのバージョンは7である。
Add new viewをクリック。
下のようにタクソノミーtermsをblockに表示する設定にする。
FieldsのAddから、Taxonomy term: Name と、 Taxonomy term: Term IDを選択。Term IDは以下、tidと略す。
create labelのチェックを外しておく。
advancedのrelationshipsからTaxonomy term: Parent termを選択。
以下の写真のように追加されていることを確認する。
もう一度、tidをfieldに追加。
RelationshipのところにParentを指定し、表示から外すにチェック。
BlockのSettingにて、List typeをOrdered listにし、次のらんで、tidを選択し、その次にrelationshipでparentにしたtidを選択する。
すると以下のようにちょっといい感じになる。Auto PreviewをONにしておくと便利。
AdvancedのAggregateをオンにする。
こんな感じ。
relationshipにTaxonomy term: Content with termを追加。
Identifierはnodeと初期設定のままでよい。
fieldに、Content: Nidを追加。
Aggregation typeに、Countを指定。
Relationshipはnodeになっているのを確認し、PrefixとSuffixに()を指定する。これでコンテントの数がカッコ内に表示されるようになる。
BlockのSettingにて、Inline filedsでName とCountにチェックを入れる。これでこれらが横一列に表示されるようになる。
じゃじゃーんと完成!
ちなみに、コンテンツがないtermは表示したくない場合は、以下のような設定をすればよい。まず、Filter criteriaにContent; Nidを追加する。
Aggregation typeにCountを設定。
OperatorにてValueが0よりis greater thanである場合、と指定する。
Filter Criteriaに以下のように追加されたことを確認する。
以上でコンテンツがないtermは表示されなくなった。
こんな感じでいい感じのカテゴリBlockに仕上げていけば完成!