[gelöst] Block für "authentifizierter Benutzer" ausblenden funktioniert nicht
am 22.09.2009 - 17:27 Uhr in
Hallo
ich habe ein kleines Problem:
Auf meiner Seite verwende ich mehrere Rollen für Benutzer. Nun möchte ich einen Info-Block einrichten, der nur für die Rolle "authentifizierter Benutzer" sichtbar ist, für die anderen Rollen nicht.
Scheinbar haben jedoch in drupal standartmässig alle Benutzer mit einer besseren Rolle als "authentifizierter Benutzer" auch die Rolle des authentifizierten Benutzers (in den Benutzereinstellungen steht ja auch "Der Benutzer erhält alle Berechtigungen der Authentifizierter Benutzer-Rolle und alle der hier ausgewählten Rollen." wenn man einem Benutzer eine zusätzliche Rolle hinzufügen möchte).
Nun meine Frage: Kann ich im Block (evtl. mit php code) irgendwie Einstellen, dass es nur den Usern, welche neben der Standart-Rolle "authentifizierter Benutzer" keine andere Rolle besitzen, den Block anzeigt?
mfg und danke für antworten
- Anmelden oder Registrieren um Kommentare zu schreiben
Ja via [1], aber du kannst
am 22.09.2009 - 18:30 Uhr
Ja via [1], aber du kannst doch einfach die Rollen anhaken, die den Block sehen soll.
<?php
global $user; // User-Object beinhaltet vers. Informationen
if (count($user->roles) > 1) {
return TRUE;
}
?>
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
danke für deine rasche
am 22.09.2009 - 18:40 Uhr
danke für deine rasche Antwort!
aber du kannst doch einfach die Rollen anhaken, die den Block sehen soll.
eben genau das ist ja leider mein problem: Wenn ich bei diesem Block einstelle, dass nur "authenticated user" den Block sehen können, erscheint diese Block auch bei usern mit der höheren Rolle "premium user"!
Wenn man sich ja auf einer Drupal-Seite registriert ist man automatisch ein "authenticated user". Danach kann man ja diesem "authenticated user" weitere Rollen zuteilen. Also hat doch somit ein Benutzer mit der zusätzlichen Rolle "premium user" auch immer noch zusätzlich den Status "authenticated user",er wäre als ein "authenticated user" mit der Rolle "premium user"?
Auf jeden Fall will es bei mir nicht klappen, dass nur "authenticated user", nicht aber "premium user", den speziellen Block sehen können..
Ist da bei mir was falsch oder in der Durpal-logik? :-)
Du willst also den Block vor
am 22.09.2009 - 18:50 Uhr
Du willst also den Block vor Benutzern mit der Rolle xyz verbergen?
Und ja jeder angemelde Benutzer hat diese Standard-Rolle.
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Tobias Bähr schrieb Du
am 22.09.2009 - 20:21 Uhr
Du willst also den Block vor Benutzern mit der Rolle xyz verbergen?
Das ist korrekt, genau das möchte ich erreichen. Wie könnte man das bewerkstelligen?
Via PHP in der
am 22.09.2009 - 20:32 Uhr
Via PHP in der Sichtbarkeiteinstellung. $user->roles enthält alle zugewiesene Rollen.
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
vielen dank, ich habe dies
am 22.09.2009 - 21:05 Uhr
vielen dank, ich habe dies nun auf meiner Testseite mit diesm PHP code so hinbekommen dass der Block nur für den authenticated user angezeigt wird. Dies wollte ich nun auf meiner regulären seite einrichten, jedoch hat es dort nicht geklappt! ich verwende das pixture Theme für drupal 5.20.. Im Log gab es keine Fehlermeldung.. an was könnte dies liegen?
Wie gesagt diese Rolle hat
am 22.09.2009 - 21:12 Uhr
Wie gesagt diese Rolle hat jeder. Du musst überprüfen, ob eine bestimmte Rolle drin ist in $user->roles. Wenn ja, musst du FALSE zurückgeben. Damit der User mit der Zusatz-Rolle diesen Block nicht sehen. Oder so:
<?php
global $user; // User-Object beinhaltet vers. Informationen
if (count($user->roles) > 1) {
return FALSE;
}
?>
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Vielen Dank, mit
am 22.09.2009 - 22:16 Uhr
Vielen Dank, mit "False" hats nun geklappt!
EDIT: ok war ein wenig voreilig, mit "False" ist der Block nun dauerhaft ausgeblendet für alle user (auch authenticated user). Aber ich nehme an dass eben False dies bewirken soll.
"Du musst überprüfen, ob eine bestimmte Rolle drin ist in $user->roles"
was meinst du genau damit? Wie kann ich nun mit deinem PHP-Code-Sample es einrichten, dass "Authenticated user" den Block sehen, nicht jedoch "Authenticated user" mit der Rolle "Premium User"?
danke!
EDIT 2: Nun hats definitv geklappt :-)
musst folgenden PHP Code eingeben:
<?php
global $user; // User-Object beinhaltet vers. Informationen
if (count($user->roles) < 2) {
return TRUE;
}
?>
Danke nochmals!