Wie kann ich einen bestimmten Link im Hauptmenü vor anonymen Benutzern verbergen, ohne das gesamte Menü unsichtbar zu machen?
Wie kann ich einen bestimmten Link im Hauptmenü vor anonymen Benutzern verbergen, ohne das gesamte Menü unsichtbar zu machen?
Antworten:
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 Administration 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 konfigurieren den Zugriff auf bestimmte Knoten / content benötigen, dann könnten Sie einen Blick auf haben Content Access .
Sie können dies leicht 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 oder hook_menu_alter verwenden .
Diese beiden Hooks haben einen Parameter, mit access callback
dem 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!
Sie können Benutzer einschränken, um einige der Menü-Links zu sehen, indem Sie Menü pro Rollenmodul verwenden .
Sie können 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.
Sie können es manuell tun. Vielleicht ist es nicht die beste Form, aber es kann Ihr Problem vorübergehend beheben.
Sie können Ihrer Hauptdatei eine JavaScript-Datei hinzufügen .tpl.php
. 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 ausblenden .hide()
. Außerdem müssen Sie Ihrem Code hinzufügen, dass die JavaScript-Datei .tpl.php
nur dann hinzugefügt wird, 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.
http://drupal.org/project/content_access funktioniert mit Drupal 7.22 sehr gut für mich.
Es werden sogar die Hauptmenü-Links ausgeblendet, die auf eingeschränkten Inhalt verweisen.