Wie kann ein Menüelement nur für anonyme Benutzer angezeigt werden?

6

Ich möchte eine Registerkarte "Jetzt beitreten" im Hauptmenü nur für anonyme Benutzer anzeigen.

In der Vergangenheit habe ich das Modul Menü pro Rolle verwendet, das genau das tut.

Da es sich nur um eine Registerkarte handelt, würde ich lieber 5 oder 10 Codezeilen verwenden. Welchen Hook soll ich verwenden und mit welchen Funktionen kann die aktuelle Benutzerrolle überprüft und ein Menüelement hinzugefügt werden (oder für angemeldete Benutzer ausgeblendet werden)?

uwe
quelle
1
Es stellt sich heraus, dass Drupal beim Erstellen eines Menüelements mit dem Pfad "Benutzer / Register" diesen automatisch ausblendet, sobald Sie angemeldet sind. Sweeeeeeeeet
uwe
1
Bitte akzeptieren Sie entweder eine Antwort oder beantworten Sie die Frage selbst und akzeptieren Sie sie. Wenn die Frage unbeantwortet bleibt, werden viele Leute kommen, um sie zu überprüfen, nur um festzustellen, dass hier nichts mehr zu tun ist.
Alex Weber

Antworten:

10

Ich denke, der einfachste Weg wäre, access callbackden Pfad zu überschreiben, auf den Ihr Menü-Link verweist. Sie können dies in einem benutzerdefinierten Modul mit hook_menu_alter()und user_is_anonymous()als Rückruffunktion verwenden:

function MYMODULE_menu_alter(&$items) {
  $items['path/to/page']['access callback'] = 'user_is_anonymous';
}

Wenn Sie einen Menülink für diesen Pfad hinzufügen, berücksichtigt das Drupal-Menüsystem den Zugriffsrückruf und der Link wird niemandem angezeigt, der angemeldet ist.

Mit dieser Methode wird auch sichergestellt, dass angemeldete Benutzer nicht direkt auf die Seite zugreifen können, was wahrscheinlich eine gute Sache ist.

Clive
quelle
7
  1. Erstellen Sie eine Ansicht und lassen Sie sie nur anonym anzeigen
  2. Verwenden Sie das Knotenzugriffsmodul, um Berechtigungen festzulegen
  3. Erstellen Sie einen neuen Inhaltstyp für Inhalte, die nur von anonymen Benutzern angezeigt werden können. Legen Sie anonym als die einzigen fest, die die Berechtigung zum Anzeigen dieses Inhalts haben.
  4. Erstellen Sie ein benutzerdefiniertes Modul nur für diese Seite.

3 ist mein gewählter Ansatz. Ich mag die Idee, den Typ zu verwenden, falls ich in Zukunft zusätzliche Inhalte für Nichtmitglieder benötige.

Aaron Ortega
quelle
Übrigens, wenn Sie dies auf diese Weise tun, wird der Inhalt in Ihren Menüs automatisch ausgeblendet und angezeigt, basierend auf der Erlaubnis
Aaron Ortega,