MyXoops Forum

Re: Gruppen-IDs auslesen und auswerten mit Smarty [Script-Workshop] - myXOOPS German Support

frankblack

"myXOOPs"-Profi
Gepostet am:05.10.2007
frankblack
frankblack Offline (Show more)
"myXOOPs"-Profi
Posts: 747
Since: 19.04.2006
#3

Re: Gruppen-IDs auslesen und auswerten mit Smarty

Viele Wege führen zum Ziel. Ich habe mich nur gefragt, warum es alle möglichen smarty-Variablen gibt, aber keine für die Gruppenzugehörigkeit.

Die smarty-Array-Funktion finde ich auch ganz schnuckelig. Ich habe sie mal mit angehängt.
... is gone with the wind ...

alfred

Administrator
Gepostet am:05.10.2007
alfred
alfred Offline (Show more)
Administrator
Posts: 7480
Since: 06.12.2004
#2

Re: Gruppen-IDs auslesen und auswerten mit Smarty

gute Idee, ich hab mir dazu aber immer einen kürzeren Weg gewählt
in das jeweilige template :

<{php}>
global 
$xoopsuser;
if (
in_array("1",($xoopsUser)?$xoopsUser->getGroups():array(XOOPS_GROUP_ANONYMOUS))) {
<{/
php]>
.. 
hier wenn der User in der gruppe ist

<{php}> } else { <{/php}>
.. 
hier für den Rest ...

<{
php}> } <{/php}>


Vorteil: es braucht nix am Core geändert zu werden

Alfred

frankblack

"myXOOPs"-Profi
Gepostet am:05.10.2007
frankblack
frankblack Offline (Show more)
"myXOOPs"-Profi
Posts: 747
Since: 19.04.2006
#1

Gruppen-IDs auslesen und auswerten mit Smarty

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 istdann 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($varexplode($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 wirddann mache irgendetwas<{/if}>


Anscheinend funktionieren auch andere Array-Funktionen wie in_array etc.pp.

Einfach mal ausprobieren.
... is gone with the wind ...
Diesen Thread durchsuchen:  1 Anonyme Benutzer