Forum CMS Made Simple FR

Version complète : [Résolu] Differences entre smarty_cms_modifier et smarty_modifier
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.9.4.3
#~ Url du site : localhost
#~ Hébergeur / Soft : moi
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~

Bonjour,
Je me suis fait un petit modifier smarty pour trier les tableaux multidimensionnels avec comme paramètre la clé des sous-tableaux sur laquelle le tri est fait.

par exemple avec comme tableau :
Code :
$foo= array (0 => array ( "a" => "Paris",
                          "b" => 20,
                          "c" => 75
                        ),
             1 => array ( "a" => "Marseille",
                          "b" => 16,
                          "c" => 13
                        ),
             2 => array ( "a" => "Lyon",
                          "b" => 9,
                          "c" => 69
                        )
            );

En utilisant le modifier smarty comme suit on tri le tableau sur la clé "a" :
Code :
$foo|@sort_multidim_array:"a"

Tout fonctionne très bien, mais je me pose quelques questions :
- est-ce que c'est un smarty_cms_modifier ou un smatry_modifier ?
(vu que je ne fais pas une seconde référence au cms, je penche pour un smatry_modifier)
- je le colle ou ce modifier ? dans lib/smarty/plugins ou dans plugins ?
(je le collerais bien direct dans plugins)

Si vous avez un avis ... je suis preneur.

Bredt Cool
je ne suis pas expert Smarty / Plugin mais de mémoire je pencherais sur son intégration dans les plugins pour te faciliter son utilisation.

ouvre des plugins existant et regarde comment ils sont fait. Te reste à dupliquer pour ton code et à le claquer dans le répertoire plugin Smile
Bonjour,
il faut nommer le modifier smarty_cms_modifier_monModifier et l'enregistrer dans le dossier plugins.
Page 104 du cookbook Smile
Ok !

>Bess
En fait qu'il soit dans /plugins ou dans /lib/smarty/plugins, ça fonctionne ! Je pose la question plus pour respecter la "convention" (si il y en a une)
>Jissey
J'avais pas pensé à mater ce livre !

Finalement, je transforme mon smarty_modifier en smarty_cms_modifier et je le colle dans /plugins !!!


Si ça peut servir a quelqu'un voici le code :

modifier.cms_sort_multidim_array.php
Code :
<?php
/**
* Smarty plugin
*/

/**
* Smarty sort_multidim_array modifier plugin
*
* Type:     modifier<br>
* Name:     sort_multidim_array<br>
* Purpose:  sort multidimentional array
* @link
* @author   Bredt
* @param array
* @param string
* @return array
*/

function smarty_cms_modifier_cms_sort_multidim_array($array, $sub_var_name='')
{
    $cmp = create_function('$a,$b', 'return $a["'.$sub_var_name.'"]>$b["'.$sub_var_name.'"];');
    usort($array, $cmp);
    return $array;
}

?>

Bredt Cool
merci pour le partage Smile
S'il devait y avoir convention, que pensez-vous du fait qu'un fonction smarty_cms_modifier s'attache à intervenir sur un problème spécifique à CMSMS (fonction pour les feuilles de styles de CMSMS, fonction dépendante d'autres fonctions de CMSMS ou de la structure de la BDD.

Là où un smarty_modifier pourrait resservir sur d'autres projets (autres que CMSMS) en copiant simplement le fichier.

Je dis ça, c'est juste ce que ça m'évoque, pas nécessairement l'idée de base de CMSMS.
Citation :En fait qu'il soit dans /plugins ou dans /lib/smarty/plugins

pour un plugin Smarty il faut par convention le mettre dans /lib/smarty/plugins
attention actuellement CMSms utilise Smarty 2 alors qu'on est déjà en version 3.13 (PHP 5.2+) et il y a des différences en particulier le structure des dossiers
- /sysplugins remplace /internals
et des différences de codage


La version 2 n'évolue plus.
Salut,

Après réflexion, je pense que kraygoon a raison :
  • smarty_cms_modifier : quand on tripote CMSMS
  • smarty_modifier : quand on tripote autre chose

Bredt Cool