Affichage d'un field different selon profil utilisateur pour un type 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 m'excuse par avance si le problème a déjà été soumis à votre sagacité, mes recherches ne m'ont pas permis de trouver de message en relation. Probablement parce qu'étant relativement nouveau sur Drupal, je n'aurais pas su utiliser les bons termes de recherche.

Je vais essayer de faire simple mais complet :
- le site est en drupal 7.
- Sur le site que je cherche à créer chaque membre peut créer un ou plusieurs Personnage(s) (nouveau content type),
- Les blogs multi-utilisateur sont activés,
- Lorsqu'il créé un billet de blog, un utilisateur peut lui attribuer un Personnage (champ non obligatoire). Cela permet de créer des mini-blogs pour chaque personnage d'un utilisateur.

Afin qu'un utilisateur ne puisse attribuer un billet de blog à un Personnage qui ne lui appartient pas, j'ai créé une Entity Reference dans Views qui prend en filtre contextuel l'uid de l'auteur pour ne lister que les noms de ses seuls personnages.
J'ai ensuite ajouté un Entity Reference filtré par cette entity reference view dans les champs du Billet de Blog.

Ce petit système fonctionne bien, et je suis assez satisfait de mon essai.
Sauf que...

Si pour une raison quelconque un administrateur ou modérateur du site est amené à éditer un billet de blog d'un utilisateur, le personnage saisi par celui-ci "saute" : l'admin/modo n'ayant pas la même liste de Personnages que l'auteur du billet, la valeur qui était donnée au champ n'est plus considérée comme valide et est supprimée, le champ se retrouve vide.

J'envisage donc éventuellement de remplacer ce champ par un classique Entity Reference qui ferait apparaître tous les personnages, pour qu'une édition du billet ne pose plus le problème.
J'aimerais toutefois conserver la possibilité de restreindre pour mes utilisateurs le choix des valeurs à leurs seuls personnages lorsque eux créent ou éditent leurs billets de blog.
Comment pourrais-je faire ?
Note si cela peut aider : les modos et admins seuls utilisent l'overlay, les utilisateurs passent par le front end pour créer leurs contenus.
En vous remerciant par avance pour vos conseils.

Données :
- La view Entity Reference : de type contenu, entity reference list, titre des contenus de type Personnages. Filtre contextuel : author uid, default = user ID from logged un user.
(j'ai deja essayé d'ajouter une relationship avec l'auteur, mais celle-ci etait peut etre mal paramétrée, ou interférait avec le filtre contextuel, la view ne me listait alors plus aucun personnage pour aucun utilisateur)
- Le champ du content type Billet : Entity Selection, Views : Filter by an entity reference view, sl_members_characters (nom de la entity reference view), aucun views arguments