#1
Gruppen-IDs auslesen und auswerten mit Smarty
05.10.2007
Möglicherweise gibt es auch einen eleganteren Weg?
1. class/theme.php editieren und nach Zeile 199 nach folgendem Code das hier einfügen:
'xoops_getgroups' => $xoopsUser->getGroups(),
2. Im Template sieht es dann so aus:
<{if array_intersect('1', $xoops_getgroups)}>falls der User in Gruppe 1 ist, dann mache irgendetwas<{/if}>
Zusatz: Ist natürlich blöd, wenn man ein Array braucht und meines Wissens gibt es im Template keine Möglichkeit auf die Schnelle ein Array zu erzeugen. Man müsste dies in der PHP-Datei machen und mit einem assign das Array an das Template übergeben. Google sei Dank, habe ich aber eine Funktion gefunden, mit der man im Template Arrays erzeugen kann.
1. Folgenden Code als Datei function.assign_array.php in class/smarty abspeichern:
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* Type: function
* Name: assign_array
* Version: 1.0
* Author: Jens Lehmann <jenslehmann@goldmail.de>
* Credits: Monte Ohrt <monte@ohrt.com>
* Purpose: assign an array to a template variable
* Input: var = name of the array
* values = list of values (seperated by delimiter)
* delimiter = value delimiter, default is ","
*
* Examples: {assign_array var="foo" values="bar1,bar2"}
* {assign_array var="foo" values="bar1;bar2;bar3" delimiter=";"}
* -------------------------------------------------------------
*/
function smarty_function_assign_array($params, &$smarty)
{
extract($params);
if(empty($delimiter)) {
$delimiter = ',';
}
if (empty($var)) {
$smarty->trigger_error("assign_array: missing 'var' parameter");
return;
}
if (!in_array('values', array_keys($params))) {
$smarty->trigger_error("assign_array: missing 'values' parameter");
return;
}
$smarty->assign($var, explode($delimiter,$values) );
}
/* vim: set expandtab: */
?>
2. Im Template sieht es jetzt so aus:
<{assign_array var="gruppen" values="1,2"}><{if array_intersect($gruppen, $xoops_getgroups)}>falls eine Übereinstimmung mit Arrays gefunden wird, dann mache irgendetwas<{/if}>
Anscheinend funktionieren auch andere Array-Funktionen wie in_array etc.pp.
Einfach mal ausprobieren.
... is gone with the wind ...