Rechte beim Block mit php Befehl?
am 13.01.2011 - 08:43 Uhr in
Ich möchte gerne einen Block einrichten, und habe ein Rechte-Problem bei Blöcken
Ich habe die Rolle
- authenticated user (Standard Drupal)
- Moderatoren (eigene Rolle)
Bei den "authenticated user" soll der Block angezeigt werden, bei den Moderatoren aber NICHT.
Bei der Grundauswahl kann man zwar "authenticated user" auswählen, der Block wird aber trotzdem bei den "Moderatoren" angezeigt, da diese ja automatisch auch "authenticated user" sind (nicht abwählbar)
Man müsste doch bei "Nur anzeigen, wenn der folgende PHP-Code TRUE zurückgibt (PHP-Modus für Experten)." etwas entsprechendes eingeben können, oder?
Zusätzlich soll der Block auf allen Seiten angezeigt werden, AUSSER auf /moderatoren
Gibt es hier einen Experten dafür?
Drupal 6
- Anmelden oder Registrieren um Kommentare zu schreiben

Rollenabfrage
am 13.01.2011 - 10:01 Uhr
Hallo.
Probier mal folgenden Code:
<?phpglobal $user;
if (in_array('authenticated user', $user->roles) && !in_array('moderator', $user->roles)) {
return TRUE;
}
return FALSE;
?>
hth,
Stefan
Da ich persönlich ja auch
am 13.01.2011 - 10:25 Uhr
Da ich persönlich ja auch immer so meine PHP Anweisungs Probleme habe, ergänze ich immer um eine weitere Rolle.
Gast - Authentifizierter User - Mitglied - Moderator
Und die Rolle "Mitglied" erhält jeder registrierte Nutzer, wenn er sich das erste Mal angemeldet hat mit einer RULES Anweisung.
Somit habe ich eigentlich nur Gäste - Mitglieder und Moderatoren und kann die Blöcke entsprechend einzeln zuweisen.
Hallo Stefan ja super, das
am 13.01.2011 - 10:29 Uhr
Hallo Stefan
ja super, das hat prima geklappt, es klasse. Vielen Dank !
Kannst Du mir nochmal helfen und eine Funktion einbauen, dass der Block "überall" angezeigt wird, außer auf .../moderatoren
thx
Martin
Pfad
am 13.01.2011 - 10:33 Uhr
<?phpreturn $_GET['q'] != 'moderatoren';
?>
Stefan
hmmm, das habe ich jetzt
am 13.01.2011 - 10:49 Uhr
hmmm, das habe ich jetzt einfach darunter gesetzt (unter den vorherigen) aber klappt bei mir nicht...
mach ich was falsch?
Sichtbarkeit
am 13.01.2011 - 21:53 Uhr
Wann genau soll der Block denn jetzt angezeigt werden?
"Auf allen Seiten ausser 'moderatoren', aber nur wenn der Benutzer die Rolle 'authenticated user', jedoch nicht die Rolle 'moderator' hat"?
<?phpglobal $user;
if (in_array('authenticated user', $user->roles)) {
if (in_array('moderator', $user->roles) || $_GET['q'] == 'moderatoren') {
return FALSE;
}
else {
return TRUE;
}
}
return FALSE;
?>
Vielen Dank für die
am 14.01.2011 - 16:35 Uhr
Vielen Dank für die Hilfe
leider klappt das "ausschalten" auf der Seite "moderatoren" noch nicht, hmmm, ich suche noch ob ich einen Fehler gemacht habe...
Danke für die Unterstützung
Zitat: leider klappt das
am 14.01.2011 - 16:51 Uhr
leider klappt das "ausschalten" auf der Seite "moderatoren" noch nicht
Öhm, kann man das nicht in den Block-Einstellungen des Blocks unter admin/build/block regeln? Da kann man doch unten festlegen, wo ein Block auftauchen soll.
Übrigens, nur so als Anregung:
Soweit ich weiß ist
<?php in_array('Rollen-Bezeichnung', $user->roles) ?>langsamer als<?php isset($user->roles[Rollen-ID]) ?>.Da kann man evtl. ein winziges Stück Aufbau-Zeit einsparen.