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

8

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

crier SiLENCE
la source

Réponses:

13

Lorsque vous rencontrez un problème avec un lien, vous devez rechercher dans le code a 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;
}

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

mpdonadio
la source
16

Vous pouvez ajouter un lien de menu vers user/login, le rappel d'accès qui vérifie qu'il n'est affiché qu'aux utilisateurs anonymes. Tout comme user/logoutn'est visible que pour les utilisateurs connectés.

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

Berdir
la source
+1 et la même chose est vraie pour user/register- créez le lien de la manière habituelle dans l'interface utilisateur du menu, et il n'apparaît que pour les utilisateurs qui ne sont pas connectés automatiquement.
user56reinstatemonica8
1

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

Gabor Szanto
la source