[Resolu]enlever une tab dans page user

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,

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

Forum : 
Version de Drupal : 

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.

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.

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.

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 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.