Cette vue permet d'afficher dans un bloc le contenu de votre site qui référence la même entité que celle référencée par l'article consulté.
Par exemple, si vous disposez d'un type de contenu Artiste qui dispose d'une référence (via un champ Entity Reference) vers le type de Contenu Mouvement vous voulez afficher, lors de la consultation d'un artiste, tous les autres artistes qui appartiennent même mouvement (artistique) et qui donc référencent le même mouvement.
Il faut créer une vue de type bloc, et choisir un format d'affichage (liste html de champs par exemple). Choisissez d'afficher tous les contenus et éventuellement vous pouvez les filtrer si besoin. Le seul paramètre qui va être utilisé se situe dans les filtres contextuels.
Le principe consiste à filtrer les articles affichés en se basant sur le filtre contextuel basé sur le champ, de type Entity Reference, utilisé pour créer une relation entre deux entités. Dans notre exemple précédent, les artistes référencent un mouvement artistique via un champ intitulé field_ref_mouvement.
Avec ce filtre contextuel basé sur le champ field_ref_mouvement, nous allons alors récupérer les contenus dont le champ field_ref_mouvement est égal à la valeur de ce champ dans le filtre contextuel.
L'enjeu est donc de récupérer la valeur du champ Entity Reference d'un contenu (de type Artiste dans notre exemple) lorsqu'il est visualisé et de le transmettre au filtre contextuel de la vue.
Dans notre exemple (cf. photo ci-dessus) nous avons donc ajouté le champ Contenu:mouvement (field_ref_mouvement) dans le filtre contextuel de la vue. Il faut le paramétrer ainsi :
Dans la section Quand la valeur de filtre N'EST PAS disponible, choisir
- Fournir une valeur par défaut > Code PHP
- Spécifier le critère de validation >Validation simple
Dans la section Plus, cochez Autoriser plusieurs valeurs
Le snippet PHP à utiliser est le suivant (à adapter selon le nom machine de votre champ entity reference) :
$node = menu_get_object(); // on récupère le noeud courant switch ($node->type) { // on peut gérer plusieurs cas de figure selon le type de contenu case 'arstiste': // Pour le type de contenu artiste $related_ids = array(); $related = field_get_items('node',$node,'field_ref_mouvement'); // On récupère le champ entity reference if ($related && is_array($related) && sizeof($related) > 0) { for ($i=0; $i<count($related); $i++ ) { $related_ids[] = $related[$i]['target_id']; } } return implode('+', $related_ids); // On retourne les valeurs du champ entity reference default: return 0; // par defaut on retourne 0 }
On ajoute ensuite dans le filtre contextuel le champ contenu:nid. Ce deuxième filtre va nous permettre d'exclure de l'affichage le contenu actuellement consulté. On paramètre ce filtre ainsi :
Dans la section Quand la valeur de filtre N'EST PAS disponible, choisir
- Fournir une valeur par défaut > Identifiant (ID) du contenu à partir de l'url
Dans la section Plus, cochez Exclure
Il suffit ensuite de positionner ce bloc et de l'afficher sur le type de contenu adéquat. Vous disposez désormais d'un bloc des contenus similaires basés sur les relations fournies par le module Entity Reference.
Commentaires
erreur php
bonjour,
j'ai suivi le tuto pas à pas et j'ai une erreur : Trying to get property of non-object dans eval()
ce tuto est exactemement ce dont j'ai besoin, "artiste" est bien le nom du content type, non pas ne nom machine nous somme bien d'accord .
Bonjour,
Bonjour,
Artiste est le nom machine du type de contenu. Pour être certain d'avoir bien récupéré le noeud, insérez un dpm($node) juste après avoir récupéré le noeud.
bonjour Fabrice,
bonjour Fabrice,
merci ça fonctionne.
De plus ça fait longtemps que je travail avec Omega, la dernière version je ne l'utilise pas ayant perdu mes marques. La bonne surprise un tuto sur Omega.
Merci beaucoup pour ce cite très pertnant.
creer une vue "taux de change"
Bonjour, je veux creer une vue qui affiche le taux de change du jour comme suit
devise Achat Vente
euro (montant) (montant)
dollar (montant) (montant)
je voulais savoir si c'est possible de creer un type de contenu taux de change ou plutot DEVISE
Ajouter un commentaire