Drupalのタクソノミーは階層的な構造にすることができます。例えば下のような構造です。
ボキャブラリ: レストラン
- 和食(タームID: 1) (投稿数: 0)
- そば・うどん(タームID: 2) (投稿数: 71)
- 寿司(タームID: 3) (投稿数: 30)
- 中華(タームID: 4) (投稿数: 0)
- イタリアン(タームID: 5) (投稿数: 0)
ブラウザで、"DRUPAL_URL/taxonomy/term/1"にアクセスした場合、『和食』というタームを付けた投稿がありませんので、"現在のところ、このカテゴリに投稿はありません。"というメッセージだけが表示され、その下位に『そば・うどん』や『寿司』といった子ターム(サブカテゴリ)があることが示されません。これでは不親切ですね。子タームへのリンクが表示されたら使いやすいサイトになると思いませんか?
現在閲覧しているタクソノミータームの子タームを表示するにはいくつもの方法があると思いますが、Views(バージョン6.x-2.x)を利用した方法を解説している下記のサイトを見つけましたのでご紹介します。
参考ページ: Using Views To Create DMOZ-Style Sub-Categories
英語なのでわかり難いと思いますので、この投稿では上記の参考ページを基に(というかほとんどそのままですが...)、設定法をご紹介したいと思います。
設定手順
STEP 1
何はともあれViewsをインストール、そして有効化。
STEP 2
ブラウザで"DRUPAL_URL/admin/build/views/add"にアクセスして"View name: taxonomy_subcats"、"View type: Term"で[Next]ボタンをクリック。
STEP 3
Relationships欄の[+]ボタンをクリックし、"タクソノミー: Parent term"にチェックを入れ、[追加]ボタンをクリック。
次の画面でそのまま[更新]ボタンをクリック。
STEP 4
Arguments欄の[+]ボタンをクリックし、"Taxonomy: Term ID"にチェックを入れ、[追加]ボタンをクリック。
次の画面の"Relationship:"という欄に、先程設定したRelationshipを設定。
そして、"Action to take if argument is not present:"という項目で、"Provide default argument"を選択し、"PHP Code"を選択。"PHP argument code:"に下のコードを挿入して[更新]ボタンをクリック。
return arg(2);
*タクソノミーページのURL、"DRUPAL_URL/taxonomy(arg(0))/term(arg(1))/タームID(arg(2))"のarg(2)の部分、すなわちをタームIDの値を返すように設定しているということです。
STEP 5
フィールド欄で[+]ボタンをクリックし、"タクソノミー: Term"にチェックを入れ、[追加]ボタンをクリック。
次の画面で、そのまま[更新]ボタンをクリック。次の画面で、"ラベル:"の"Term"というテキストを消去。
"Link this field to its taxonomy term page"にチェックを入れ、[更新]ボタンをクリック。
STEP 6
画面左上のDefaultsタブの下のセレクトリストから"ブロック"を選択し、[Add display]ボタンをクリック。
STEP 7
これでViewsの設定は終わりですので、画面下部の[保存]ボタンでこれまでの設定を保存します。これを忘れるとこれまでの設定が全く保存されませんのでご注意ください。
STEP 8
ブラウザで"DRUPAL_URL/admin/build/block"にアクセスし、"taxonomy_subcats: ブロック"の[設定]リンクをクリック。
設定画面の"ページ固有の表示設定"欄で"リストに記載したページにのみ表示する"にチェックを入れ、"ページ:"欄に下記の文字列を入力。
taxonomy/term/*
STEP 9
最後に"taxonomy_subcats: ブロック"をお好みのリージョンに表示するよう設定。
*上記の設定が面倒な方は、参考記事の下部にあるViewsからエクスポートされたコードをインポートして、そこから調整していくという手段もあります。ブラウザで"DRUPAL_URL/admin/build/views/import"にアクセスし、"Paste view code here:"というフィールドに、コードを挿入するだけですので、試してみてください。
表示例
CocoaSpaceのテスト環境で作成したものです。
右上の水色の部分が、今回ご紹介した方法で追加したサブカテゴリへのリンクです。
CocoaSpaceが運営する別サイト、CyberAmenityでは、スタート当初から下記のテーマをカスタマイズする方法で、類似の効果を実現してきました。よろしければご参照ください。ただし、近日サイトのリニューアルを予定していますので、テーマの刷新とともに、この記事でご紹介したViewsでの方法に切り替える予定です。
テーマをカスタマイズして子タームを表示する方法:
Drupal Taxonomy - How to add a list of clickable sub-categories | Robert Green's DIY
コメントを追加