créer une vue par vocabulaire

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

Je cherche à créer une vue différente pour chaque type de vocabulaire.
En effet en fonction du vocabulaire j'ai besoin de filtrer les résultats de manière différente.
Concrètement j'ai ceci :
marchand/monmarchand1 (voc/term)
marchand/monmarchand2
...
et :
article/tag1 (voc/term)
article/tag2
...

Dans views 3 (drupal7), j'utilise la vue "taxonomy term". Le truc est qu'en créant une vue pour "article" et une autre pour "marchand" avec chacune ses réglages je n'arrive pas à assigner ma vue 1 à marchand et ma vue 2 à article...

J'ai lu de nombreux posts, articles... sans trouver véritablement la solution.
Certains disent qu'il faut modifier les chemins système, c'est à dire pour marchand il faudrait par exemple créer un path personnalisé du type taxonomy/termMarchand/%, du coup dans le paramétrage de la vue on pourrait lier à ce chemin la vue... Mais bon je n'arrive pas à mettre cela en oeuvre...

Donc, en gros, si quelqu'un sait concrètement comment il faut s'y prendre, sa réponse sera plus qu'appréciée.

Merci d'avance.

Version de Drupal : 

Voici la solution que j'ai trouvée après de longues heures de recherche.
D'aucuns diront que c'est une solution de bourin car il s'agit d'aller directement dans le coeur de Drupal et ils auront pas tout à fait tord, mais je ne vois pas comment on peut faire autrement.

Via l'interface utilisateur de Views, il faut commencer par créer un chemin ressemblant à ça : taxonomy/term/%/legume (% = ton terme, legume = ta taxonomie)

Ensuite tu vas dans modules/taxonomy, tu ouvre le fichier taxonomy.module, tu cherches la fonction taxonomy_term_uri (ligne 145 pour moi) et tu rajoute ça :
elseif($term->vocabulary_machine_name == 'legume') {
return array(
'path' => 'taxonomy/term/' . $term->tid .'/legume',
);
}

Et c'est tout.

Je te mets ma fonction complète pour que ce soit plus clair :

function taxonomy_term_uri($term) {
if($term->vocabulary_machine_name == 'tags') {
return array(
'path' => 'taxonomy/term/' . $term->tid .'/article',
);
}

elseif($term->vocabulary_machine_name == 'marchand') {
return array(
'path' => 'taxonomy/term/' . $term->tid .'/marchand',
);
}

elseif($term->vocabulary_machine_name == 'category') {
return array(
'path' => 'taxonomy/term/' . $term->tid .'/category',
);
}

return array(
'path' => 'taxonomy/term/' . $term->tid,
);

}

Je salue l'effort. Reste que taper dans le dur comme ça "c'est le mal" :) Ce n'est surtout pas bien maintenable.

Sinon, le module pathauto fait très bien ce dont vous avez besoin il me semble, et ce, automatiquement.

Il transforme ces fameuses url "taxonomy/term/[id]" par [nom du vocabulaire]/[nom du terme]. Views sait ensuite traiter cela en filtrant notamment par le chemin: [nom du vocabulaire]/%. Vous pouvez ainsi paramétrer une "view" pour chaque vocabulaire.