Zeigen Sie im Benutzermenü "Anmelden" an, wenn Sie nicht angemeldet sind

8

Ich frage mich, wo ist der Code, der "Mein Konto" und "Abmelden" im Benutzermenü verbirgt? Nur neugierig, aus diesem Code zu lernen. Wie können Sie wissen, wo Sie suchen müssen, wenn Sie so etwas wissen möchten?

Ich habe diesem Menü einen Link "Anmelden" hinzugefügt und möchte diesen ausblenden, wenn niemand angemeldet ist.

schreiende SiLENCE
quelle

Antworten:

13

Wenn Sie etwas haben, das mit einem Link passiert, müssen Sie im Code nach a suchen hook_menu(). Dann müssen Sie erraten, in welchem ​​Modul es sich befindet. In diesem Fall werfen Sie einen Blick auf das Kernbenutzermodul:

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

  return $items;
}

Beachten Sie die 'access callback' => 'user_is_anonymous',Zeile. Dies bedeutet, dass Sie dies nur tun können, wenn Sie anonym sind (dh nicht angemeldet sind). Dies bedeutet, dass Sie nur einen Menüeintrag mit "Benutzer / Login" als Pfad vornehmen können sollten und der Link nur angezeigt wird, wenn Sie abgemeldet sind.

mpdonadio
quelle
16

Sie können einen Menü-Link hinzufügen user/login, dessen Zugriffsrückruf überprüft, ob er nur anonymen Benutzern angezeigt wird. Genau wie user/logoutist nur für angemeldete Benutzer sichtbar.

Die Definition dieser Rückrufe () lautet, wie in der anderen Antwort erwähnt, in user_menu()

Berdir
quelle
+1 und das Gleiche gilt für user/register- Erstellen Sie den Link auf die übliche Weise über die Menü-Benutzeroberfläche. Er wird nur für Benutzer angezeigt, die nicht automatisch angemeldet sind.
user56reinstatemonica8
1

Überprüfen Sie die Menüdefinitionen user_menu()im Benutzermodul. Der Zugriffsrückruf bestimmt, wann der Menüpunkt angezeigt wird.

Gabor Szanto
quelle