menuepunkte
Eingetragen von Kourosh (81)
am 07.05.2008 - 12:45 Uhr in
am 07.05.2008 - 12:45 Uhr in
wie kann ich die Menuepunkte userspezifisch ein bzw. ausblinden lassen.
- Anmelden oder Registrieren um Kommentare zu schreiben
Wenn du unter Verwalten -
am 07.05.2008 - 13:05 Uhr
Wenn du unter Verwalten - Zugriffskontrolle für verschiedene Rollen verschiedene Berechtigungen vergibst, wirkt sich das auch auf die angezeigten Menüpunkte aus. Ist es das, was du meinst?
Nur bedingt
am 07.05.2008 - 13:43 Uhr
Vor dem Problem stehe ich auch gerade.
Ich habe im Primary Menu die Links zu Books, Fotos, PN, etc...
Anonymous User haben nur das Recht "Kommentare lesen", damit ihnen ueberhaupt die Startseite angezeigt wird...
Ich hab nun mal die ganzen relevanten "Access"-Module in die Installation kopiert. Mal sehen ob ich dadurch den Zugriff fuer Anonymous User sperren kann...
...ueber die normale Zugriffskontrolle ging es (bei mir) nicht.
Ciaoi
SirFiChi
---------
Drei mal Rechts ist auch Links....
Eine andere Möglichkeit
am 07.05.2008 - 15:53 Uhr
Eine andere Möglichkeit wäre, neue Menüs zu erstellen, dadurch werden automatisch neue Blöcke erzeugt.
In der Konfiguration der Blöcke kann man dann einstellen, welche Rollen diesen oder jenen Block sehen dürfen.
So kann man auch steuern, dass jede Rolle nur die Menüpunkte und Funktionen angezeigt bekommt, die sie auch benutzen darf.
Eigene Menuemanipulation ..
am 08.05.2008 - 10:56 Uhr
mir reichten die Einstellungen auch nicht aus und habe mir daher ein eigenes Modul geschrieben mit dem ich das Menü manipulieren kann.
Die Grundstruktur ist recht einfach. Um z. B. das Registrierungsformular (Bearbeiten) auszublenden kann das mit folgendem Code gemacht werden.
/**
* Das Menüsystem deder Anwendung manipulieren
*/
function menumanipulation_menu($may_cache)
{
global $user;
$items = array();
// nur für angemeldete User, 1. User hat weiterhin Zugriff
if(!$may_chache && ($user -> uid > 1))
{
$items[] = array(
'path' => 'user/'.$user -> uid.'/edit',
'title' => t('Sollte es nicht geben'),
'callback' => '',
'access' => FALSE,
'type' => MENU_LOCAL_TASK
);
}
return $items;
} // END menumanipulation_menu
Ich nutze hierfür die eine Eigenschaft von Drupal, wonach Drupal erst die "cachable items", also Standard-Menüpunkte, holt und dann die "noncachable" abarbeitet. So kann ich sicherstellen das die Menüpunkte auch wirklich überschrieben werden. Weiterhin werden damit auch die Callback-Funktionen überschrieben und die Seiten können nicht mehr mit einem direkten Link aufgerufen werden. "Pro Drupal Development", Seite 33
Auf die gleiche Weise kann man die Rollen aus dem User-Objekt abfragen und den Zugriff definieren.
Gruß
UwBach