it-swarm.com.de

Link vor anonymen Benutzern ausblenden

Wie kann ich einen bestimmten Link im Hauptmenü vor anonymen Benutzern verbergen, ohne das gesamte Menü unsichtbar zu machen?

7
Walker

Sie konfigurieren die Sichtbarkeit von Links nicht so sehr direkt, sondern konfigurieren die Berechtigungen bestimmter Inhaltstypen. Abhängig von den Berechtigungen des Inhalts, auf den der Link verweist, ist jeder Link zu Inhalten eines bestimmten Typs entweder sichtbar oder unsichtbar .

Sie können die Berechtigungen für einen bestimmten Inhalt konfigurieren, indem Sie im Abschnitt Berechtigungen in der Verwaltung den Inhaltstyp suchen, für den Sie die Berechtigungen einschränken möchten, und diese Berechtigungen (Kontrollkästchen zum Anzeigen, Erstellen, Bearbeiten usw.) basierend konfigurieren auf Rolle angemessen.

Wenn Sie den Zugriff auf bestimmte Knoten/Inhalte konfigurieren müssen, sehen Sie sich möglicherweise Content Access an.

5
Lester Peabody

Sie können dies einfach mit etwas Ellbogenfett tun!

Hierfür gibt es zwei Hooks, je nachdem, ob Ihr Menü von einem Modul oder von Drupal selbst) generiert wird. In einem benutzerdefinierten Modul würden Sie entweder hook_menu) verwenden oder hook_menu_alter .

Diese beiden Hooks haben den Parameter access callback wo Sie ihm eine Funktion geben können, die ein BOOL zurückgibt. Wenn die Funktion TRUE zurückgibt, ist der Zugriff zulässig und der Menülink wird angezeigt. Wenn FALSE zurückgegeben wird, ist der Zugriff nicht zulässig und der Menülink wird nicht angezeigt.

//Small example
function <your_module>_menu_alter(&$items) {
  // Example - disallow access for anonymous to node 15 from custom module
  $items['node/15']['access callback'] = '_accessCheck';
}

Weiter unten definieren Sie den Rückruf:

function _acccessCheck(){
  global $user;
  if ($user->uid) { // user is logged in
    return TRUE;
  } // Anonymous
    return FALSE;
}

Hoffe das hilft, viel Spaß beim Codieren!

5
stefgosselin

sie können Benutzer einschränken, um einige der Menü-Links zu sehen, indem Sie das Modul Menü pro Rolle verwenden.
Hiermit können Sie den Zugriff auf Menüelemente basierend auf Benutzerrollen einschränken. Sie können also einen bestimmten Menülink vor einer bestimmten Rolle ausblenden und anderen anzeigen.

3
AjitS

Sie können es manuell tun. Vielleicht ist es nicht die beste Form, aber es kann Ihr Problem vorübergehend beheben.
Sie können Ihrem Hauptmenü .tpl.php Eine JavaScript-Datei hinzufügen. In dieser Datei können Sie mit den übergeordneten und untergeordneten Elementen Ihres Codes (http://api.jquery.com/parent) mithilfe von JavaScript-Methoden spielen. Also müssen Sie zuerst Ihr Element durch etwas wie #idelement (Es kann im Menücode zwischen allen Blättern des Menüs positioniert sein) erhalten und dann das Element durch .hide() ausblenden. Außerdem müssen Sie Ihrem Code hinzufügen, dass die JavaScript-Datei nur dann zum .tpl.php Hinzugefügt wurde, wenn der Benutzer angemeldet ist.

if(user_is_logged_in()){
   drupal_add_js(yourjSFile);
}    

Ich wiederhole, das ist eine vorübergehende Lösung.
Wenn Sie Ihren Code oder Ihr Element im Menü geändert haben, muss auch diese Lösung geändert werden.
Dadurch wird nur ein Menüelement und nicht die Inhaltstypen ausgeblendet.

2
Dieiba

http://drupal.org/project/content_access funktioniert sehr gut für mich mit Drupal 7.22.

Es werden sogar die Hauptmenü-Links ausgeblendet, die auf eingeschränkten Inhalt verweisen.

0
Ray Hulha