私は何日も費やして、次のことを行うためのクリーンな方法を決定しようとしました:
これはかなり一般的に必要とされる機能のようですが、特にすべての用語ツリーが同じ深さまで下降していない場合は特に、任意の深さを処理できるソリューションを見つけることができません。
理想的なソリューションは、ビュー3、コンテキスト、EntityFieldQueries、またはDrupal 7。
私はほぼ 3つのノード:用語の関係(用語、用語の親、および用語の親の親)を使用して単純なビューを作成し、それらを順次コンテキストフィルターに使用することで、まさに私が望むことを実行できます。これの唯一の問題は、深さが少なすぎる用語パスを持つノードがある場合、「未分類」としてリストされ、デッドリンクが生成されることです。そうする代わりに、利用可能な次の子の用語にリンクしたいと思います。
Viewsモジュールのみでこれを行う方法を見つけました。それは完璧ではありません—単一の深さの分類法に対する私のソリューションが行うような方法で、分類系統を持つニースURLとブレッドクラムを生成しません。
静的な深さの分類(すべての用語の子項目の深さが同じである)の場合、次のようにします。
変数の深さの分類法(一部の用語ツリーのネストのレベルが他よりも深い場合)の場合、これは少し複雑になります。
参照用のビューのUIのスクリーンショット:
ビューページにアクセスすると、最上位の親の子が表示されます。あなたが得る例によると:
Term1をクリックすると、子が表示されます。 term1.1.1に到達するまで。 term1.1.1をクリックしても、結果は表示されません。そのためには、上のビューにもう1つのビューブロックを作成する必要があります。
ビューを保存すれば完了です。
あなたが望んでいるのは Views Tree 、分類用語のツリーを作成するために Views を使用するcontribモジュールだと思います。
(ちょっと教えてください、それを使用する簡単なハウツーを書いて、税フィールドを表示します)
どうやらそのモジュールには issue があり、分類用語を処理できません。ブー。
とはいえ、私はあなたが望んでいることをしているように見える次のコードを見つけました(かなり基本的なjQueryコードを使用して要素を表示/非表示にすることができます):
<?php
// The ID of the taxonomy vocabulary for which you'd like to create a nested list
$vid = 10;
$depth = 0;
$num_at_depth = 0;
$tree = taxonomy_get_tree($vid);
print "<ul class=\"menu\">\n<li>";
foreach ($tree as $term) {
$diffdepth = 0;
if ($term->depth > $depth) {
print "\n<ul>\n<li>";
$depth = $term->depth;
$num_at_depth = 0;
}
if ($term->depth < $depth) {
$diffdepth = $depth - $term->depth;
while ($diffdepth > 0) {
print "</li>\n</ul>\n";
$diffdepth--;
}
$depth = $term->depth;
}
if (($term->depth == $depth) && ($num_at_depth > 0)) {
print "</li>\n<li>";
}
print l($term->name, 'taxonomy/term/' . $term->tid);
$num_at_depth++;
}
print "</li>\n</ul>\n";
" ページへのリンクを含むネストされたカテゴリリスト "経由。
動的な分類参照ページのセットだけが必要な場合は、次のようにします。3つのビュー+ Taxonomy Display モジュールを使用して、ビューを表示できるようにします。 _taxonomy/term/%
_ページの内容:
ビュー1と2はおそらく同じようにテーマ化されるので、それらをディスプレイとして1つのビューにマージすることを検討するかもしれません-より簡単に管理できます。
私は分類法にそのアプローチをうまく使用しました。幸いにも、それは各レベルで同種でした-特定の枝は葉(ノード)または枝(用語)のいずれかで終わりましたが、両方ではありませんでした。これが制限になる場合は、最初にテストしてください。
もちろん、これは「疑似コード」です。検証とフィルター、および構造を反映するための見栄えがよく、論理的に見えるパスオートパターンを設定する必要があります。