[gelöst] block per role ausgeben in content mit php
Eingetragen von stefansan (107)
am 21.06.2010 - 06:00 Uhr in
am 21.06.2010 - 06:00 Uhr in
hallo,
ich möchte gerne in abhängigkeit der rolle einen block im normalen contentbereich einer seite anzeigen.
in diesem code erhalte ich leider immer nur den alternativen inhalt und nicht den block angezeigt.
ist da ein fehler drin?
// Array mit Rollen, die den Block sehen dürfen
$arrAllowedRoles = array('admin', 'authenticated user');
$boolAllowed = false;
foreach ($user->roles as $strRoleName) {
if (in_array($strRoleName, $arrAllowedRoles) === true) {
$boolAllowed = true;
}
}
// Authorisierte Rollen sehen das hier
if ($boolAllowed === true) {
$block = module_invoke('blog', 'block', 'view', '0');
print $block['content'];
}
// Optional kann im Else-Zweig nichtauthorisierten Rollen
// alternativer Content präsentiert werden
else {
print "Alternativer Content für nichtauthorisierte Rollen";
}
?>
danke für hinweise
stefan
- Anmelden oder Registrieren um Kommentare zu schreiben
Schau dir mal die foreach
am 23.06.2010 - 09:41 Uhr
Vergleiche mal die foreach Schleife an. $strRoleName ist in deiner Schleife kein String sondern ein Array.
// Array mit Rollen, die den Block sehen dürfen
$arrAllowedRoles = array('admin', 'authenticated user');
$boolAllowed = false;
foreach ($user->roles as $roleID => $strRoleName) {
if (in_array($strRoleName, $arrAllowedRoles) === true) {
$boolAllowed = true;
}
}
// Authorisierte Rollen sehen das hier
if ($boolAllowed === true) {
$block = module_invoke('blog', 'block', 'view', '0');
print $block['content'];
}
// Optional kann im Else-Zweig nichtauthorisierten Rollen
// alternativer Content präsentiert werden
else {
print "Alternativer Content für nichtauthorisierte Rollen";
}
Woher kommt eigentlich deine
am 22.06.2010 - 12:55 Uhr
Woher kommt eigentlich deine $user-Variable? Eventuell fehlt da noch
<?php
global $user;
?>
um die Rollen überhaupt auslesen zu können.
so gehts jetzt
am 01.07.2010 - 09:06 Uhr
danke euch beiden.
ich habe beides eingebaut und nun klappts. super!
so siehts aus:
<?php
global $user;
// Array mit Rollen, die den Block sehen dürfen
$arrAllowedRoles = array('admin', 'support','Intensivkurs');
$boolAllowed = false;
foreach ($user->roles as $roleID => $strRoleName) {
if (in_array($strRoleName, $arrAllowedRoles) === true) {
$boolAllowed = true;
}
}
// Authorisierte Rollen sehen das hier
if ($boolAllowed === true) {
$block = module_invoke('block', 'block', 'view', '28');
print $block['content'];
}
// Optional kann im Else-Zweig nichtauthorisierten Rollen
// alternativer Content präsentiert werden
else {
print "Alternativer Content für nichtauthorisierte Rollen";
}
?>
danke
stefan