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

28

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 ... des trucs typiques de Drupal .. D'accord...

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 lorsqu'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 des vues? 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.

blue928
la source

Réponses:

20

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.

blue928
la source
Votre solution ressemble à un super plan! Malheureusement, je ne reçois pas la partie "L'affichage de la taxonomie vous permet d'associer un vocabulaire à une vue particulière" ... Pourriez-vous me l'expliquer un peu plus en détail?
Michiel
Une fois le module d'affichage de taxonomie installé, vous verrez dans ses options de paramètres pour contrôler la façon dont les listes de termes de taxonomie sont affichées. Les vues sont une option. Vous choisissez la vue, puis choisissez l'élément dans cette vue auquel vous souhaitez que les éléments de votre liste de taxonomie ressemblent. Tout cela suppose que vous avez déjà créé une vue qui répertorie le contenu comme vous le souhaitez. Une fois que vous appuyez sur Enregistrer, votre liste de taxonomie ressemble exactement à la sortie de la vue que vous avez sélectionnée dans les paramètres.
blue928
7

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 à l'aide de taxonomie / terme / # 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 que Drupal fait avec toute demande est de convertir l'alias en une norme de format nœud / nid pour tout le contenu Drupal. Donc, dans votre cas, les véhicules / camions sont convertis au nœud / # 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 le contenu des 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.

Pierre de taille
la source
3

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. Vue taxonomie

Jeremy John
la source
2

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.

Patrick Kenny
la source
Je ne suis pas un grand fan de panneaux, mais c'est une voie possible. Aussi, j'ai suivi ce tutoriel ici leveltendesign.com/blog/dustin-currie/… . Cela fonctionne parfaitement, sauf qu'il utilise le numéro d'identification de la taxonomie, mais j'ai besoin du nom de la taxonomie comme avec des tirets au lieu d'espaces. Avez-vous déjà fait une supercherie comme celle-ci?
blue928
2
Nous le faisons tout le temps. Les panneaux définissent une page pour cela (bien que désactivée par défaut) hors de la boîte, donc je l'appellerais à peine inélégant.
mpdonadio
Je voudrais plus de détails! :)
Chris Happy
1

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

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

timofey.com
la source