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.

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.


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()


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.