web-dev-qa-db-fra.com

Comment remplacer une liste de taxonomie / terme /% par une vue?

J'ai un vocabulaire attaché à un type de contenu. Un seul terme peut être sélectionné pour classer un nœud créé avec ce type de contenu. Le vocabulaire est appelé véhicules et a des termes "voitures, camions, bateaux". Le type de contenu est également nommé Véhicules.

J'utilise le chemin auto pour qu'il affiche [vocabulaire: nom]/[terme: nom] donc lors du rendu, il montrera site.com/vehicles/trucks, par exemple, qui montrera tous les camions ... typique Drupal stuff .. Ok ...

Maintenant, j'ai une vue qui est une page avec un chemin "véhicules". Il est configuré pour afficher tous les éléments du type de contenu "véhicules". Cette vue de page est également configurée pour prendre un argument "id de terme de taxonomie".

Notez que lorsque le terme de taxonomie est présent, l'alias d'URL généré pour le chemin de taxonomie est exactement le même que la page Vues avec un argument fourni:

URL Chemin de taxonomie aliasé = véhicules/camions. Pages vues avec argument = véhicules/camions.

C'est exprès. Mon objectif était de montrer tous les résultats de ce type de contenu lorsqu'un argument n'était pas présent, et quand il était présent, il filtrerait surtout les résultats en fonction de ce terme de taxonomie ET garderait les mêmes champs et la même structure que sans l'argument (identique à site.com/véhicules).

Le problème est que cela ne fonctionne pas comme prévu. site.com/vehicles affiche correctement ma vue et les filtres associés. site.com/vehicles/trucks affiche uniquement la liste de taxonomie régulière et non formatée fournie par Drupal.

Est-ce parce que l'argument ID de terme de taxonomie n'est pas configuré correctement?

Est-ce un problème de poids lorsque des crochets de taxonomie tirent après Views? Si oui, comment puis-je réorganiser les poids ici afin qu'il se déclenche correctement et me donne les résultats dont j'ai besoin?

Je sais ce que vous allez suggérer - que Views est livré avec la vue taxonomie/terme /% pour remplacer les vues par défaut drupal).

Cependant, cela ne fonctionnera pas dans mon cas. J'ai plusieurs types de contenu, chacun avec son propre vocabulaire et chacun avec sa vue et un ensemble distinct de champs (les maisons et les voitures, par exemple, ont des ensembles de champs très différents). La taxonomie/terme /% fonctionnerait si tous les types de contenu avaient les mêmes champs, alors je pourrais simplement imiter ceux dans cette substitution, mais comme ce n'est pas le cas, comment puis-je obtenir correctement mon chemin avec un argument pour afficher les résultats basés sur ce terme de vocabulaire et garder ma structure de champ?

Désolé si c'était confus. Un lien vers le site pour référence http://www.buyagainbaby.com . Le site utilise actuellement la taxonomie/terme /% comme remplacement, mais encore une fois, cela doit changer pour que chaque vue soit responsable de la façon dont elle rend son jeu de résultats en fonction de la taxonomie.

28
blue928

Toutes ces réponses sont d'excellentes solutions, et merci d'avoir pris le temps de fournir de telles réponses informatives. Ashlar, votre réponse m'a beaucoup appris sur le fonctionnement de la taxonomie ainsi que sur la relation entre les vues et la taxonomie.

J'ai trouvé une solution qui fonctionne très bien pour ma situation, et je la partagerai au cas où cela pourrait vous aider aussi.

Comme je l'ai expliqué ci-dessus, mon problème était que ma vue, sans argument, fournissait les résultats que je voulais, mais la vue de taxonomie par défaut avec un argument, ce qui n'était pas ce que je voulais.

Pour résoudre ce problème, j'ai installé le module Taxonomy Display http://drupal.org/project/taxonomy_display . J'ai ensuite reconfiguré chaque vue pour avoir l'ID de terme de taxonomie comme argument.

L'affichage de la taxonomie vous permet d'associer un vocabulaire à une vue particulière. Maintenant, lorsque je clique sur véhicules/camions, qui est un alias de taxonomie/terme/3, la vue prend le relais et cela est en fait rendu correctement en maintenant l'intégrité de la structure du champ.

Si quelqu'un veut en savoir plus sur la configuration, faites-le moi savoir.

20
blue928

Je crois qu'il y a plusieurs facteurs à considérer dans votre configuration:

  • Chaque chemin doit être unique pour accéder à une page, un terme, une vue ou un panneau de page. Si vous avez deux éléments de contenu avec la même adresse, vous perdez le contrôle de l'affichage. Drupal donne la priorité au terme de taxonomie sur les vues afin qu'il ne soit pas appelé. La définition de la vue utilisant taxonomy/term/# interceptera le terme de taxonomie, mais comme vous l'avez indiqué, n'affiche pas d'URL significative.

  • Les vues ne répondent pas aux alias. C'est parce que la première chose Drupal fait avec toute demande est de convertir l'alias en un format de noeud/nid standard pour tous Drupal content. Donc dans votre cas véhicules/camions est converti en noeud/# affecté à la vue. La vue ne peut pas prendre directement le contexte d'un alias.

Pour obtenir ce que vous voulez, effectuez l'une des opérations suivantes.

  • Créez un menu avec les rappels définis sur le chemin de votre vue. Cela générera l'URL correcte et permettra à la vue de répondre.

  • Utiliser les panneaux avec Page Manager (dans Ctools Suite) activé. Si vous définissez un panneau de page défini pour l'URL appropriée, vous pouvez placer votre vue dans le volet de panneau ou transmettre le contexte de la page de panneau directement à un volet de contenu Vues. Un volet de contenu n'a pas de chemin. Au lieu de cela, il prend les contextes tels que le chemin d'accès, défini directement par le panneau de page, pour créer son contenu. Cette série de vidéos sur nodeone.se fait un excellent travail pour montrer comment utiliser efficacement les panneaux et le gestionnaire de pages.

  • Une autre façon d'obtenir du contenu de vues à l'écran est d'utiliser le module quicktabs . Je ne pense pas que cela corresponde à votre situation spécifique, mais il peut également accéder directement aux vues en sélectionnant les onglets que vous définissez pour une page.

7
Ashlar

Views a une vue intégrée qui émule et remplace les termes de taxonomie. Activez-le simplement pour remplacer les listes de taxonomie par des vues. Taxonomy view

4
Jeremy John

J'ai fait une chose similaire il y a quelques jours. Ma solution n'est pas élégante mais elle fonctionne. Ce que j'ai fait était de remplacer l'affichage du terme de taxonomie en utilisant des panneaux, pas des vues. J'ai ensuite ajouté toutes mes vues différentes pour chaque terme à la zone de contenu des panneaux. Étant donné que dans mon cas, chaque vue possède un filtre qui la limite aux résultats d'un vocabulaire particulier, lorsque vous visitez la page des termes de taxonomie, elle n'affiche que la vue de ce vocabulaire particulier.

Faites-moi savoir si vous avez besoin de plus d'informations sur la façon dont j'ai implémenté cela.

2
Patrick Kenny

WebbyKat , une excellente solution a été proposée pour définir le chemin de votre page sur /taxonomy/term/% au lieu de /categories/%

Cela fonctionne, mais il réécrira tous vos termes dans une seule vue.

1
timofey.com