Submitted by benoit74 on
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.
bonjour benoît, j’ai
Permalien Soumis par bobinette le 5 Janvier, 2012 - 14:46
bonjour benoît,
j'ai exactement le même problème (je viens de mettre ce message http://drupalfr.org/forum/support/support-general/31275-lien-quand-cliqu...)
avez-vous trouvé une solution ?
Voici la solution que j’ai
Permalien Soumis par benoit74 le 10 Janvier, 2012 - 01:35
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
Permalien Soumis par Wooha le 10 Janvier, 2012 - 09:15
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.