iGalerie

  • Accueil
  • » Bugs
  • » Tri des images par nom de fichier

#1 17-06-2019 08:24:23

Reuns
Membre
Inscription : 20-09-2016
Messages : 18

Tri des images par nom de fichier

Bonjour David,

J'ai un problème lorsque l'on effectue un tri des images par nom de fichier.
J'ai une suite d'image qui doit être afficher dans un ordre précis. J'ai nommé l'ensemble de mes images : 1.jpg, 2.jpg, 3.jpg, 4.jpg, 5.jpg ... 59.jpg

Toutefois, le classement se fait de la sorte :
1, 10, 11, 12, ..., 19, 2, 20, 21 ,22... 29, 3, 30, 31, ...

Du coup, le tri ne fonctionne plus correctement.
Soit j'ai zappé une option, soit on a besoin d'un correctif.
Peux-tu éclairer ma lanterne stp ?

Merci.

PS : Si tu fais un patch, j'avais fait une petite modification sur ton thème de base, pour faciliter la navigation sur smartphone... si tu pouvais l'intégrer à ta distribution, ça profiterais à tous, sans avoir besoin de re-modifier le fichier css systématiquement. Merci ^^
http://www.igalerie.org/forum/viewtopic.php?id=2977

Hors ligne

#2 17-06-2019 09:51:59

David
Développeur d'iGalerie
Inscription : 12-05-2006
Messages : 3 832
Site Web

Re : Tri des images par nom de fichier

Salut,

Reuns a écrit :

Toutefois, le classement se fait de la sorte :
1, 10, 11, 12, ..., 19, 2, 20, 21 ,22... 29, 3, 30, 31, ...

Ce comportement est en fait tout à fait normal car le tri s'effectue par ordre alphabétique et non numérique, car les noms de fichiers sont traités comme des chaines et non comme des nombres.

Si tu veux un classement numérique, tu as deux solutions :

1. Soit renommer tes fichiers 01.jpg, 02.jpg, etc.

2. Soit remplacer la partie de code suivante du fichier includes/classes/sql.php se trouvant en ligne 341 :

return str_replace(
    array('image_name', 'image_size'),
    array('LOWER(image_name)', '(image_width*image_height)'),
    implode(', ', $order_by)
) . ' img.image_id DESC';

par celle-ci :

$path = utils::filters($infos['cat_path'], 'path');
return str_replace(
    array('image_path', 'image_name', 'image_size'),
    array(
        'REPLACE(image_path, "' . $path . '/", "")+0',
        'LOWER(image_name)+0',
        '(image_width*image_height)'
    ),
    implode(', ', $order_by)
) . ' img.image_id DESC';

Pour ta modification CSS, il suffit de l'enregistrer dans Thèmes / Style additionnel, ce qui évite de perdre les modifications du thème à chaque mise à jour.

Hors ligne

#3 17-06-2019 09:54:59

Reuns
Membre
Inscription : 20-09-2016
Messages : 18

Re : Tri des images par nom de fichier

Encore une fois, une réponse impeccable.

Merci à toi.
(PS :  la modif pourrait être utile à pas mal de monde, mais c'est toi qui voit ^^)

Hors ligne

  • Accueil
  • » Bugs
  • » Tri des images par nom de fichier

Pied de page des forums