web-dev-qa-db-fra.com

Afficher «se connecter» dans le menu utilisateur lorsqu'il n'est pas connecté

Je me demande, où est le code qui cache "Mon compte" & "Déconnexion" dans le menu utilisateur? Juste curieux, d'apprendre de ce code. Une façon de savoir où chercher si vous voulez savoir quelque chose comme ça?

J'ai ajouté un lien "Connexion" à ce menu et je souhaite le masquer lorsque personne n'est connecté.

8
screaming SiLENCE

Lorsque quelque chose se produit avec un lien, vous devez rechercher dans le code une hook_menu(). Ensuite, vous devez deviner dans quel module il se trouve. Dans ce cas, jetez un œil au module utilisateur de base:

function user_menu() {
  $items['user/login'] = array(
    'title' => 'Log in',
    'access callback' => 'user_is_anonymous',
    'type' => MENU_DEFAULT_LOCAL_TASK,
  );

  return $items;
}

Noter la 'access callback' => 'user_is_anonymous', ligne. Cela signifie que vous ne pouvez le faire que si vous êtes anonyme (c'est-à-dire non connecté). Cela signifie que vous devriez simplement pouvoir faire une entrée de menu avec "utilisateur/connexion" comme chemin, et le lien ne s'affichera que lorsque vous serez déconnecté.

13
mpdonadio

Vous pouvez ajouter un lien de menu à user/login, Le rappel d'accès de celui-ci vérifie qu'il n'est affiché qu'aux utilisateurs anonymes. Tout comme user/logout N'est visible que pour les utilisateurs connectés.

La définition de ces rappels () sont, comme mentionné dans l'autre réponse, en user_menu()

16
Berdir

Vérifiez les définitions de menu dans user_menu() dans le module utilisateur. Le rappel d'accès détermine quand l'élément de menu sera affiché.

1
Gabor Szanto