J'ai passé des jours à essayer de déterminer une façon propre de procéder comme suit:
Cela semble être une fonctionnalité assez courante, mais je ne trouve aucune solution capable de gérer une profondeur arbitraire, en particulier si tous les arbres de termes ne descendent pas à la même profondeur.
Une solution idéale serait celle qui utilise Views 3, Contexts, EntityFieldQueries ou tout autre élément bien pris en charge dans Drupal 7.
Je suis capable de faire presque exactement ce que je veux en créant une vue simple avec trois nœuds: relations de terme (terme, parent du terme et parent du parent de terme) et utiliser celles-ci pour des filtres contextuels séquentiels. Le seul problème avec cela est que s'il y a un nœud avec un chemin de terme trop peu profond, il est répertorié comme "non catégorisé" et génère un lien mort. Au lieu de faire cela, j'aimerais qu'il soit lié au prochain terme enfant disponible.
J'ai trouvé un moyen de le faire avec uniquement le module Views. Ce n'est pas parfait - cela ne génère pas une URL Nice et un fil d'Ariane avec la lignée taxonomique comme le ferait ma solution pour une taxonomie d'une seule profondeur.
Pour une taxonomie de profondeur statique (où tous les termes ont la même profondeur de termes enfants), vous feriez ce qui suit:
Pour une taxonomie de profondeur variable (où certains arbres à terme ont des niveaux d'imbrication plus profonds que d'autres), c'est un peu plus complexe:
Captures d'écran de l'interface utilisateur de Views pour référence:
Lorsque vous visitez la page de visualisation, vous voyez les enfants du parent supérieur; selon l'exemple que vous obtiendriez:
Lorsque vous cliquez sur term1, vous obtenez les enfants. Jusqu'à ce que vous atteigniez le terme 1.1.1. Vous n'obtiendrez aucun résultat si vous cliquez sur term1.1.1 pour le moment. Pour y parvenir, nous devons créer un bloc de vue supplémentaire dans la vue ci-dessus.
Enregistrez la vue et vous avez terminé.
Je pense que ce que vous voulez est Views Tree , un module contrib qui utilise Views pour construire un arbre de termes de taxonomie.
(Donnez-moi une seconde et je vous écrirai un rapide guide d'utilisation des champs fiscaux)
Apparemment, ce module a un problème l'empêchant de travailler avec des termes de taxonomie. Huer.
Cela dit, j'ai trouvé le code suivant qui semble faire ce que vous voulez (vous pouvez le faire afficher/masquer des éléments via un code jQuery assez rudimentaire):
<?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";
Via " Listes de catégories imbriquées avec liens vers des pages ".
Si vous voulez juste avoir un ensemble de pages dynamiques de navigation dans la taxonomie, alors je procéderais comme suit, nécessitant 3 vues + Taxonomy Display module qui vous permet d'utiliser des vues pour afficher le contenu de taxonomy/term/%
pages:
Comme les vues 1 et 2 auront probablement un thème similaire, vous pouvez envisager de les fusionner en tant qu'écrans en une seule vue - ce serait plus facile à gérer.
J'ai utilisé cette approche avec succès pour ma taxonomie. Heureusement, elle était homogène à chaque niveau - une branche donnée se terminait par des feuilles (nœuds) ou des branches (termes), mais pas les deux. S'il s'agit d'une limitation, veuillez d'abord la tester.
Il s'agit bien sûr d'un "pseudo-code". Vous voudriez mettre en place des validations et des filtres, ainsi qu'un joli motif pathauto d'aspect logique pour refléter la structure.