Passer un argument dans une views a un bloc

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,

Je cherche à savoir comment passer un argument depuis une view.
Je m'explique, en fait a partir du module view j'ai crée une page. Cette page permet d'offrir a l'utilisateur deux listes de selection pour l'affichage qu'il souhaite réalisé(utilisation des parametres "filtre" et de l'option "exposer").
Les choix se basent en fait sur les termes de taxonomie (pour la liste 1) et du type de contenu (pour la liste 2).

Suite à sa selection, je souhaiterai que des blocs répondant aux divers contenus filtrés apparaissent sur la page. Pour cela toujours dans views j'ai crée 3 blocs différents et qui correspondent aux affichages que je souhaite réalisé.

Par exemple: le terme "sport" est selectionné dans la liste1
Le bloc 1 affichera uniquement les titres liés au type de contenu "Reportages"
Le bloc 2 affichera uniquement les titres liés au type de contenu "Resultats"
Le bloc 3 affichera uniquement les titres liés au type de contenu "Boutiques"
Bien sur pour ces trois types de contenus il ne sera question que des sujets lié au terme pré-sélectionné çàd "sport".

Maintenant si l'utilisateur en plus d'avoir sélectionné "sport" dans la liste 1, il sélectionne le type de contenu "Reportages" dans la liste 2 uniquement le bloc 1 sera affiché.

Je ne sais pas si j'ai été bien clair, mais en gros je veux faire passer les différentes pré-selection effectuer sur ma page aux différents blocs que j'ai réalisé à partir du meme fichier view.

J'ai deja joué pas mal avec les options du parametre "Argument" lors de la création de chacun de mes blocs, mais pour l'instant c'est la peine seche grave.

Forum : 
Version de Drupal : 

Bonjour,

Le post est ancien mais il est très très proche de ce que je souhaite faire sans y arriver ... Si vous avez trouvé la solution ou des pistes pour y arriver, je suis fortement intéressé par ces connaissances.

Bonjour,

Je vais essayer de me penché avec vous sur ce sujet (en espérant quand même que JayVee s'en est sorti depuis le temps).

Donc pour la solution vous comment j'aurais fonctionné:

Création d'une page avec filtres comme déjà fait:
Filtre 1 -> Terme
Filtre 2 -> Type de contenu

Création des 3 Blocs avec Comme Argument:
Bloc 1 : Taxonomie Terme, Node Type
Bloc 2 : Taxonomy Terme
Bloc 3 : Taxonomy Terme

Pour l'argument Taxonomy Term dans les 3 Blocs mettre une valeur par défaut en php :

return $_GET['nom_de_largument'];

Pour avoir le nom de l'argument c'est plutôt simple il suffit d'aller sur la page de la vue et de filtrer dans la barre d'adresse vous aurez quelques choses de ce genre :
http://localhost/monsite/blabla?term_node_tid_depth=All&type=All
blabla étant le chemin
term_node_tid_depth étant le filtre par taxonomie
type le filtre par type de contenu
A vous de repérer lequel est lequel.
Pour moi l'argument par défaut donnera donc

return $_GET['term_node_tid_depth'];

Ensuite pour le bloc 1 nous avons le deuxième argument qui est le type donc nous faisons la même chose en passant un argument par défaut, celui-ci sera du coup le type:

return $_GET['type'];

Ainsi les blocs prendront les arguments des filtres passé en paramètres.

Ensuite pour l'affichage des blocs (ça se complique un peu et ne suit pas sur que se soit la meilleur des solutions.

Nous allons à l'interface de placement des blocs sur lequel nous allons mettre nos blocs dans les régions voulues.

Ensuite nous allons paramétrer chacun des bloc (bloc2 et 3 identiques au niveau du paramétrage).

Pour le bloc 1: on affectera dans le filedset "Paramètres de visibilité spécifiques à la page" la valeur "Afficher si le code PHP suivant retourne TRUE (mode PHP, experts seulement)." avec cette valeur ci:

if (arg(1) == 'blabla'){
    if($_GET['term_node_tid_depth'] || $_GET['type']){
       return TRUE;
    }else return FALSE;
}else return FALSE;

Pour le bloc 2 et 3 même technique mais avec cette valeur:

if (arg(1) == 'blabla'){
    if($_GET['term_node_tid_depth'] || !$_GET['type']){
       return TRUE;
    }else return FALSE;
}else return FALSE;

Faire attention de remplacer les valeur par les vôtres. Valeur à remplacer:
- blabla ( lien vers la page )
- term_node_tid_depth (nom mis pour le filtre par taxonomy
- type (nom mis pour le filtre par type)

Avec tous cela normalement vous devrait avoir les vues fonctionnelles et prenant compte des paramètres.
J'espère ne pas avoir fait de fautes dans le code ou dans l'explication.
Si vous ne pouvez pas insérer de valeurs php verifiez que le module PHP filter est activé dans la liste de vos modules.

J'attends une réponse de votre part pour savoir si cela fonctionne et vous a aidé. J’essaierai d'être le plus réactif possible afin de vous aidez dans vos développement en cette période de fêtes.

Cordialement,
AyA

Dès lecture de votre long mot, je ne pouvais que réagir rapidement pour vous en remercier.
Maintenant ... j'analyse, je teste, je triture, je vous raconte ... à bientôt, dans pas trop longtemps, je l'espère ...

Je devais un retour sur cette aide de Aya.

Et bien ce fut parfaitement ça. Je précise juste qu'il a fallu exposer les filtres pour les voir dans l'URL, ce qui, pour ma connaissance d'alors, n'allait pas de soit.