Unterschiedlicher Header im View für verschiedene Benutzerrollen
Eingetragen von towelie (85)
am 09.10.2009 - 12:18 Uhr in
am 09.10.2009 - 12:18 Uhr in
Hallo,
ich habe einen View, der Inhalte eines speziellen Inhaltstypen anzeigt. Der Gast kann die Inhalte eingeschränkt (nicht alle CCK-Felder) sehen, Benutzerrolle Nr.1 kann Inhalte erstellen und Benutzerrolle Nr. 2 kann die Inhalte uneingeschränkt (alle CCK-Felder) sehen. Nun habe ich im Kopfbereich des View eine kleine Einleitung mit Link zur Registrierung. Ist es möglich, dass für die beiden Benutzerrollen nun ein anderer Kopfbereich angezeigt wird? Ein Link zur Registrierung macht natürlich für einen User nun keinen Sinn mehr, eher ein Link um einen Beitrag zu erstellen.
Gruß
towelie
- Anmelden oder Registrieren um Kommentare zu schreiben
php
am 09.10.2009 - 17:26 Uhr
Im Kopfbereich des Views per php die Benutzerrolle abfragen und dementsprechend andere Inhalte ausgeben.
Etwa mit:
<?php
global $user;
if(array_key_exists('entsprechende Rolle', $user->roles) {
.....
}
?>
--
textformer mediendesign | Webkrauts
Danke für die schnelle
am 09.10.2009 - 19:36 Uhr
Danke für die schnelle Antwort, nur leider klappt das nicht so ganz. Drupal spuckt mir folgende Fehlermeldung aus:
Parse error: syntax error, unexpected '{' in /.../includes/common.inc(1685) : eval()'d code on line 3
Für die "entsprechende Rolle" habe ich versucht den Namen der Rolle und die Id einzusetzen...
php?
am 09.10.2009 - 19:49 Uhr
Hmm, hast du die php-Option aktiviert und das richtige Format für den Filter im Kopfbereich vergeben? Ansonsten sieht das nach einem Tippfehler aus. Poste hier einfach mal deinen Code, dann schauen wir drüber.
--
textformer mediendesign | Webkrauts
Jep, PHP Filter Modul ist
am 09.10.2009 - 20:09 Uhr
Jep, PHP Filter Modul ist aktiviert und auch im Kopfbereich ausgewählt. Habe leider keine Ahnung von PHP, aber vielleicht ist es auch einfach falsch direkt den Namen der Rolle anzugeben?
<?php
global $user;
if(array_key_exists('Gast', $user->roles) {
Test
}
?>
Die User Logged In Abfrage funktioniert übrigens, reicht mir aber nicht, da ich ja zwei verschiedene Rollen für registrierte Benutzer habe ;)
Rollen
am 09.10.2009 - 22:12 Uhr
Moin.
$user->roles
enthält die Rollen des Benutzers als einfaches Array mit numerischen Schlüsseln. Dementsprechend dürftearray_key_exists
nicht das gewünschte Ergebnis liefern.Probiers mal mit folgendem Code:
<?php
$global $user;
if (in_array($user->roles, 'Gast')) {
print t('Hello, guest.');
}
elseif (in_array($user->roles, 'moderator')) {
print t('Hello, moderator!');
}
?>
hth,
Stefan
--
sei nett zu Deinem Themer
Wir brauchen Deine Stimme für die DrupalCon 2010 oder 2011 in Berlin!
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hey, leider funktioniert
am 09.10.2009 - 23:45 Uhr
Hey,
leider funktioniert auch das nicht. Diesmal heißt es:
Parse error: syntax error, unexpected T_VARIABLE in /.../includes/common.inc(1685) : eval()'d code on line 2
Auch wenn ich nur den if Teil nehme und elseif weglasse...
global
am 10.10.2009 - 09:25 Uhr
Ja, da hat sich ein
$
zuviel eingeschlichen.Richtig muss es
global $user
heissen.Stefan
--
sei nett zu Deinem Themer
Wir brauchen Deine Stimme für die DrupalCon 2010 oder 2011 in Berlin!
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Auch nicht, diesmal:
am 10.10.2009 - 12:30 Uhr
Auch nicht, diesmal:
* warning: in_array() [function.in-array]: Wrong datatype for second argument in /.../includes/common.inc(1685) : eval()'d code on line 3.
* warning: in_array() [function.in-array]: Wrong datatype for second argument in /.../includes/common.inc(1685) : eval()'d code on line 6.
Hab noch versucht eine else Schleife dranzufügen, bringt aber auch nichts. Wenn ich doch nur ein Fünkchen Ahnung von PHP/Javascript hätte...
Wrong datatype for second argument in ...
am 10.10.2009 - 13:09 Uhr
in_array() [function.in-array]: Wrong datatype for second argument in ...
Die PHP Funktion in_array() erwartet als 1. Parameter den Wert der im Array gefunden werden soll und als 2. Parameter das Array in dem der Wert sein koennte. Daraus ergibt sich:
<?php
global $user;
if (in_array( 'Gast', $user->roles)) {
print t('Hello, guest.');
}
elseif (in_array( 'moderator', $user->roles,)) {
print t('Hello, moderator!');
}
?>
Problematisch finde ich nach den Bezeichnungen der Rollen zu fragen. Besser ist es die Id's der Rollen zu verwenden. Damit schliesst man Probleme in nichtenglischen Drupalsite aus wenn die Ubersetzung einer Bezeichnung einer Rolle geaendert wird.
PS
http://php.net/in_array
------------------------
Quiptime Group
Da geht noch was.
Super, nun funktioniert es!
am 10.10.2009 - 14:37 Uhr
Super, nun funktioniert es! Die Rolle "Gast" wurde allerdings ignoriert. Habe es dann einfach so gelöst:
<?php
global $user;
if (in_array( 'Benutzerrolle1', $user->roles)) {
print t('Hallo Benutzerrolle1');
}
elseif (in_array( 'Benutzerrolle2', $user->roles)) {
print t('Hallo Benutzerrolle2');
}
else
{
print t('Hallo Gast');
}
?>
Danke für eure Hilfe! :)