Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Module News: Trier les catégories
#4

Merci Jissey pour le tuyau.

Le fichier modifier.sortby.php doit être installé dans le répertoire /lib/smarty/plugins et le fichier qui marche bien est composé comme ceci:

Code :
[== PHP ==]
<?php
#
# sorts an array of named arrays by the supplied fields
#   code by dholmes at jccc d0t net
#   taken from http://au.php.net/function.uasort
# modified by cablehead, messju and pscs at http://www.phpinsider.com/smarty-forum

function array_sort_by_fields(&$data, $sortby){
     static $sort_funcs = array();

   if (empty($sort_funcs[$sortby]))
   {
       $code = "\$c=0;";
       foreach (split(',', $sortby) as $key)
       {
          $d = '1';
             if (substr($key, 0, 1) == '-')
             {
                $d = '-1';
                $key = substr($key, 1);
             }
             if (substr($key, 0, 1) == '#')
             {
                $key = substr($key, 1);
              $code .= "if ( ( \$c = (\$a['$key'] - \$b['$key'])) != 0 ) return $d * \$c;\n";
             }
             else
             {
              $code .= "if ( (\$c = strcasecmp(\$a['$key'],\$b['$key'])) != 0 ) return $d * \$c;\n";
           }
       }
       $code .= 'return $c;';
       $sort_func = $sort_funcs[$sortby] = create_function('$a, $b', $code);
   }
   else
   {
       $sort_func = $sort_funcs[$sortby];
   }
   uksort($data, $sort_func);
}

#
# Modifier: sortby - allows arrays of named arrays to be sorted by a given field
#
function smarty_modifier_sortby($arrData,$sortfields) {
  array_sort_by_fields($arrData,$sortfields);
  return $arrData;
}
?>

Et enfin dans le gabarit du sommaire je modifie comme ceci

Code :
[== Indéfini ==]
{foreach from=$cat|@sortby:"news_category_name" item=node}

Mon problème est donc résolu.
Répondre


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)