[Résolu] Vue filtrée selon une référence de contenu ?

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 suis en train de créer mon premier site sous Drupal 8.4.4, et j'ai un souci de configuration.

Voici ce que je veux faire :
- Lister des activités réparties dans plusieurs thématiques ;
- Chaque thématique a sa propre page, qui inclut un texte explicatif et la liste des activités associées ;

Aujourd'hui, j'arrive à le faire en créant :
- Un type de contenu Thématique avec les champs Title et Body, ainsi qu'un champ ViewsReference ;
- Un type de contenu Activité avec les champs Title et Body, ainsi qu'un champ TextList reprenant la liste complète des thématiques ;
- Une vue Activités_Par_Thématique_xxx pour chaque thématique, listant les contenus de type Activité filtrés selon le champ TextList ;
- Un contenu de type Thématique pour chaque thématique, avec le champ ViewsReference renseigné avec le nom de la vue créé précédemment ;
- Un contenu de type Activité pour chaque activité, avec le champ TextList renseigné par sélection dans la liste ;

Mon problème est que cela m'oblige à créer un grand nombre de vues (j'ai plus d'une trentaine de thématiques), et que cela me gènera pour l'évolution du site (obligation de modifier toutes les vues séparément à chaque changement).

Ce que j'aimerais :
- Une unique vue Activités_Par_Thématique, listant les contenus de type Activité filtrés selon la page Thématique en cours ;

Par exemple, pour deux thématiques "Sorties sportives" et "Soirées jeux de sociétés", j'aurais à créer :
- Un contenu de type Thématique "Sorties sportives" ;
- Un contenu de type Thématique "Soirées jeux de sociétés" ;
- Une unique vue pour l'ensemble des thématiques ;
- Les activités en sélectionnant pour chacune une page "Sorties sportives" ou "Soirées jeux de sociétés" ;

Comment pourrais-je faire cela ?

J'utilise déjà l'extension "Views Reference Field" pour afficher une vue dans un contenu de type Thématique, mais je n'arrive pas à passer à ma vue la référence de la page où je suis pour l'utiliser comme filtre.

Question subsidiaire :
- J'aimerais que la page Activité intègre un lien vers sa thématique, généré automatiquement à partir du champ utilisé pour faire le filtre

Merci d'avance pour vos conseils

Bonjour,

pour afficher la thématique que tu souhaites, je mettrai un filtre de critère "Filter criteria" taxonomie pour afficher un panneau déroulant pour que l'internaute sélectionne ce qu'il souhaite afficher. tu peux rajouter d'autre filtre comme le type de contenu, le thème, les sous thèmes. .

Pour avoir qu'une view qu'y se charge de tout gérer, ou d'en faire le moins. Je te dirais de regarder du côté des "Relationships" et de "Contextual filters" dans view. En ajoutant une relation de thème avec l'affichage que tu souhaites.

je ne maitrise pas encore trop ce domaine..

Il doit bien avoir des personnes sur le forum qui pourront te donner la meilleure solution.

Bonjour,

Merci pour ta réponse.

En ce qui concerne le premier point (filter criteria), comme je dois afficher un texte d'introduction selon la thématique, je préfèrerai que la vue soit intégrée dans une page/un contenu avec un premier écran de sélection, et que l'internaute n'ait pas la main sur le filtre.

Je vais regarder les relationships et contextual filters, ça me parait intéressant

Quand je relis ton post.. j'ai un peu de mal d'ailleurs à tout cerner .. mais bon c'est mon cerveau qui décroche :D Mais pour faire ce que j'ai l'impression de comprendre.

Je ferais une page comme tu l'as faite. Je rajoute un bloc en haut de la page sport "A" pour afficher un texte d'introduction. Je fais ma page avec Panels.. je créer ma view que je mets en dessous du bloc.

Tout à l'heure je cherchais un truc pour moi.. je suis tombé sur cet article qui pourrait t'intéresser pour la suite.

Bon, ça y est, j'ai trouvé cet article

Pour plus de détails :
- Dans mon type de contenu Activité, j'ai mis un champ "Référence à une entité" nommé "lien_activité_vers_thematique"
- Chaque fois que je créée une activité, je saisis la thématique voulue (titre du contenu)
- J'ai créé une vue "Activités_Par_Thématique" de type block qui affiche des contenus de type "Activité"
- Dans Relationships -MERCI BV-, j'ai ajouté "Content référencé depuis lien_activité_vers_thematique"
- Dans Filtres contextuels -MERCI BV-, j'ai ajouté un filtre selon l'identifiant, avec Relation : lien_activité_vers_thematique" et "Quand la valeur n'est pas disponible : Identifiant du contenu à partir de l'URL"
- Dans mon type de contenu Activité, j'ai mis un champ "ViewReference" (extension nécessaire) avec comme valeur par défaut (qui ne sera jamais changée) "Activités_Par_Thématique"

Et voilà

Merci BV