web-dev-qa-db-fra.com

Comment afficher / masquer un seul élément de menu en fonction du rôle de l'utilisateur?

J'ai un seul élément de menu que je voudrais afficher ou masquer en fonction du rôle de l'utilisateur.

Cas d'utilisation: J'ai un site d'adhésion avec des adhésions payantes et gratuites. Dans le menu de navigation, je souhaite afficher un lien pour les utilisateurs qui n'ont pas le rôle "payant" vers la page "Mettre à niveau votre compte". Il n'est pas nécessaire de limiter l'accès; Je veux simplement afficher ou masquer le lien.

Je sais que je pourrais créer un menu séparé et restreindre l'accès à ce bloc de menu par rôle, mais existe-t-il un moyen facile de faire de même pour un lien d'élément de menu unique dans un menu existant?

5
Patrick Kenny

Il existe un moyen de le faire sans module supplémentaire si la page "Mettre à niveau votre compte" est une vue. Vous pouvez ensuite limiter l'accès à cette vue aux utilisateurs anonymes et ajouter l'entrée de menu dans cette vue.

1
uwe

Vous pouvez essayer Menu par rôle

Ce module vous permet de restreindre l'accès aux éléments de menu1 en fonction des rôles d'utilisateur. Cela dépend du Drupal core menu.module — activez simplement les deux modules et modifiez un élément de menu comme d'habitude. Il y aura un nouveau fieldset qui vous permettra de restreindre l'accès par rôle. Le fieldset apparaît également dans le formulaire de modification du nœud.

enter image description here

La version D7 n'est pas encore stable 7.x-1.x-dev

4
niksmac

Une autre solution de module à cela que j'ai récemment trouvée est Visibilité des éléments de men . Bien qu'il soit encore en version bêta, il fonctionne actuellement dans D7, ce que je n'ai pas pu faire pour l'élément de menu par rôle. (J'ai dû continuer à vider le cache à chaque fois qu'un utilisateur enregistrait son profil pour reconstruire le menu.)

1
Patrick Kenny