Submitted by selinav on
Bonjour,
Lorsque l'on est connecté sur la page user.
Des onglets apparaissent en fonction des modules que l'on a d'installé.
Je voudrais masquer l'un d'entre eux en fonction du rôle de l'utilisateur.
J'utilise content_profile qui me met un onglet proposant d'éditer son profil.
Cependant je voudrais qu'il n'apparaisse pas pour un rôle donné.
Dans le code du module, je n'ai pas trouvé où désactiver l'affichage donc je ne peux pas faire de test sur le rôle.
Existe-t-il un moyen de faire un hook sur les tabs?
D'avance merci
Il me semble que l'onglet
Permalien Soumis par Léman_Web_et_Design le 27 Novembre, 2009 - 19:33
Il me semble que l'onglet "modifier" sur la page de profil apparaît sur une installation de base de Drupal, module (content_profile présent ou non).
Maintenant cet onglet modifier permet juste à l'utilisateur de changer son adresse email et son mot de passe, ce qui n'a rien de grave.
il s'agit de l'onglet créer
Permalien Soumis par selinav le 27 Novembre, 2009 - 20:54
il s'agit de l'onglet créer par content_profile que je souhaite masquer en fonction du rôle utilisateur. (type de contenu lié au profil)
Le module Tab tamer (non ce
Permalien Soumis par nyot559 le 27 Novembre, 2009 - 23:17
Le module Tab tamer (non ce n'est pas une insulte) faic ca tres bien et s'occupe au pasage de tous les autre onglets présents sur le site.
Edit: Oups j'avais pas lu "pour un role donné" désolé j'ai rien dit.
peut-on le gérer en
Permalien Soumis par selinav le 30 Novembre, 2009 - 09:04
peut-on le gérer en fonction des rôles car d'après l'imprim écran du module je n'ai pas l'impression que l'on puisse le faire.
Merci
Au pire, tu peux, dans le
Permalien Soumis par fishclic le 30 Novembre, 2009 - 11:59
Au pire, tu peux, dans le template de ton theme, modifier la variable $body_class pour qu'elle prenne en compte les rôles.
Et ensuite tu affiches ou tu caches les tab en CSS, selon la class que tu trouveras dans le body.
si je fais ceci ça va me
Permalien Soumis par selinav le 30 Novembre, 2009 - 12:14
si je fais ceci ça va me masquer tous les onglets et non pas uniquement un.
Est-il possible d'intervenir dans la variable $tabs pour supprimer un élément?
Hello Selinav J'ai une
Permalien Soumis par juliendubreuil le 1 Décembre, 2009 - 00:04
Hello Selinav
J'ai une solution à ton probleme mais il va te falloir développer un module pour cela. Je pense qu'il doit être possible d'utiliser le preprocess de thème mais je n'en suis pas sûr.
Avant tout je n'ai rien pour tester donc tout ce qui suit ne fonctionnera pas forcement mais ca te donnera une idée.
Comme d'habitude tu crées un module avec les fichiers qui vont biens, .info et .module.
Dans le point module tu va utiliser le hook_menu_alter() qui va te permettre de modifier n'importe quel menu et il te faut trouver à quel moment modifier ton menu.
function MONMODULE_menu_alter(&$items) {
//Récupération de l'user en cours
Global $user;
// Tu test si tu as bien un user et qu'il ne soit pas anonyme (user 0)
if (!empty($user) && $user->uid != 0) {
// tu test le role
if $user->role == 'lerolequetuveux'{
// tu desactive le menu en question
unset($items['NOMDUMENU']);
}
}
}
Pour trouver ton menu en question il faut que tu le cherches avec un print_r($items) juste en dessous de la fonction.
Attention cette solution fonctionnera si ton tabs n'est pas le premier élément sinon ca ce complique un peu.
C'est vraiment simple à faire, moins à expliquer en faire :)
merci Julien je mets ton
Permalien Soumis par selinav le 1 Décembre, 2009 - 11:07
merci Julien je mets ton code de côté car ça pourra me servir ultérieurement.
En fait tout est résolu, j'avais un problème de droit, maintenant que tout est reconstruit tout fonctionne impeccable.
Milles excuses pour le dérangement.
Tab tamer
Permalien Soumis par gregoiresan le 1 Avril, 2010 - 00:18
Tab tamer