[eZ Publish] Problème d'utilisation d'un template operator de mélange aléatoire de tableau
Bonjour,
j'ai créé un template operator , mon premier en fait , pour pouvoir trier les éléments d'un tableau de manière aléatoire mais cela ne semble pas fonctionner. je vous présente le code que j'ai développé pour mon fichier getshuffle.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
<?php
class getShuffle
{
// Constructeur
function getShuffle() {
$this->Operators = array('melange');
}
// Retoune la liste des operateurs dans la classe
function &operatorList() {
return $this->Operators;
}
function namedParameterPerOperator() {
return true;
}
function namedParameterList() {
return array('melange' => array());
}
function modify( $tpl, $operatorName, $operatorParameters, $rootNammespace, $currentNamespace, $operatorValue, $namedParameters ) {
switch( $operatorName ) {
case 'melange':
$operatorValue = $this->melange($operatorValue);
break;
}
}
function melange($tableau) {
$val = array();
$keys = array_keys($tableau);
shuffle($keys);
foreach($keys as $key) $val[] = $tableau[$key];
return $val;
}
}
?> |
Le code semble bien être pris en compte par ez publish car en y laissant des erreurs il me les affiche à l'écran.
pour être plus précis je vous montre aussi les contenus de mes fichiers extensions/mon_extension/autoloads/eztemplateautoload.php et extension/mon_extension/settings/site.ini.append.php
eztemplateautoload.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<?php
// Operator autoloading
$eZTemplateOperatorArray = array();
$eZTemplateOperatorArray[] = array(
'script' => 'extension/mon_extension/autoloads/getshuffle.php',
'class' => 'getShuffle',
'operator_names' => array( 'melange' )
);
?> |
site.ini
Code:
1 2 3
|
[TemplateSettings]
ExtensionAutoloadPath[]=mon_extension |
Et voici comment j'appelle ma fonction dans la page correspondante
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
{set-block scope=root variable=cache_ttl}0{/set-block}
{def $max=fetch('content', 'tree_count',
hash('parent_node_id',$node.parent_node_id,
class_filter_type, include,
class_filter_array, array('livre_collection','livre_serie')))
$ouvrages=fetch('content', 'tree',
hash('parent_node_id', $node.parent_node_id,
class_filter_type, include,
class_filter_array, array('livre_collection','livre_serie'),
limit,$max))
}
{foreach $ouvrages as $index => $ouvrage}
{if $ouvrage.node_id|eq($node.node_id)}
{set $ouvrages=$ouvrages|remove($index}
{/if}
{/foreach}
{set $ouvrages=$ouvrages|melange()}
{node_view_gui view=random_ouvrages content_node=$ouvrages} |
Avez-vous une idée quelle erreur j'ai pu faire dans mon code ou mon appel de ma fonction ?