SPIP Forums

[ar] [ca] [cpf] [de] [en] [es] [fr] [it]

Ce forum d’entraide est recommandé pour les utilisateurs et utilisatrices occasionnels de SPIP (système de publication pour l’Internet). Avant de poser une question, faites une recherche sur ce site, consultez les liens utiles. Si vous ne trouvez pas de réponse, postez votre message dans la rubrique appropriée, avec un titre explicite.


Accueil du site> Forums de discussion >  Création de squelettes > Trier les articles par titre sans "le, la, les..."

Trier les articles par titre sans "le, la, les..."

par Hubombing - 26 décembre 2005 16:09 - Réponse(s) : 11

Bonjour,

Nous exploitons 1200 articles qui correspondent à 1200 films. L’habitude en la matière est de présenter un classement alphabétique en ne tenant pas compte de l’article définit (le, la, les, l’) en début de mot. ex :

Etre et avoir Le fabuleux destion d’Amélie Poulain Festen

Le classement par num titre n’effectue pas ce classement...

Comment faire alors ? Je vois bien des solutions en php, mais si je peux éviter... merci.


Indiquez l'intérêt que vous portez à cette question

Suivre la vie du site

Trier les articles par titre sans "le, la, les..."

26 décembre 2005 17:48 - par Mortimer

il faudrait, au mieux, creer un critère de tri perso qui fait la bonne requette SQL, si tu connais un peu php/mysql, je peux te guider...

sinon, il y a deux solutions plus simples, mais un peu contraignantes :

  1. écrire les titres avec l’article à la fin, ça se fait aussi assez souvent : « Fabuleux Destin, Le »
  2. écrire les titres sans article et mettre un mot clef qui spécifie un article et ensuite ajuster le squelette pour qu’il ajoute l’article au début du titre en fonction du mot clef.

Trier les articles par titre sans "le, la, les..."

26 décembre 2005 18:40 - par Trong-Duc

Il ne serait pas possible d’utilsier un des champs suivants : surtitre, soustitre ou chapeau avec le nom sans le pronom et ensuite utiliser par exemple : {par num chapeau}

Idée farfelue, Mortimer ??


Trier les articles par titre sans "le, la, les..."

26 décembre 2005 21:03

Merci bien pour vos réponses, toutes me paraissent valables mais il est clair que j’ai un faible pour la première solution qui serait de créer un nouveau critère de tri !

Je connais mieux php que mySql et je me débat encore avec les expressions régulières mais j’arrive à m’en sortir en général ;-)

Donc si tu veux bien me guider...


Trier les articles par titre sans "le, la, les..."

26 décembre 2005 23:30 - par Mortimer

je suis pas expert en mysql non plus :(

mais ajouter un critère dans SPIP est assez simple, il suffit d’ajouter une fonction dans mes_fonctions.php3 comme décrit ici : http://www.spip-contrib.net/spikini...

L’api a un peu changé je crois et la page est pas totalement à jour. Regarde directemetn dans inc-criteres.php3 pour voir la nouvelle notation.

En tout cas, dans ton cas, il faut faire un truc du genre :

function critere_par_titre_special($idb, &$boucles, $crit) {
        $not = $crit->not;
        $boucle = &$boucles[$idb];
        $id = $boucle->primary;

       $boucle->order[] = "$id.titre";
}

Le truc c’est de mettre le critère order qu’il faut dans le tableau. Là, c’est du mysql, il faudrait utiliser une fonction mysql qui existe déjà, il y en a sûrement déjà une, mais je ne sais pas trop quoi.


Trier les articles par titre sans "le, la, les..."

27 décembre 2005 18:40

Merci pour ton aide ! J’ai trouvé la requête SQL "qui va bien".

C’est à base de TRIM(LEADING ’Le ’ titre), et ça enlève les débuts de chaîne... alors en mettant une série ça donne ça la fonction :

Pas facile à coder le L apostrophe ! (cf. \’l\\\\\’ \’ ) Il y a uneccueil qui ne devrait pas se présenter, c’est le cas ou un film par exemple s’appellerait :
- "Le la" (film musical !)

Merci, et bon courage à tous pour pour ces petits trucs de rien du tout qui prennent 2 jours au lieu des 5 minutes prévues...

Hubombing


Trier les articles par titre sans "le, la, les..."

1er mars 2007 10:39 - par 2mop

je m’ocupe d’un catalogue de livres et j’ai le même problème : "le promeneur du val" doit être classé à P et pas à L.

j’ai essayé ton code mais je suis en 1.8.2 es-ce un problème ?

et je n’ai pas compris s’il fallait mettre le code dans mes_fonctions.php ou dans ecrire/mes_option.php ?

enfin pourais tu me donner un exemple de boucle qui utilise ton filtre :

es-ce {par titre|parTitreFilm} ou {parTitreFilm}

par avance merci


+ espagnol, italien, anglais

1er mars 2007 16:31 - par hubombing

Oulala mais c’est une vieille histoire (lol)... Je ne me souvenais même plus avoir eu ce problème ;)

Je viens de vérifier, la fonction prend place dans le fichier mes_fonctions.php3

J’avais une version un peu différente pour les articles définis, également en espagnol, italien et anglais :

function critere_parTitreFilm($idb, &$boucles, $crit) { // trier les fims par titre en ne prenant pas les articles définit le la les l'
    $not = $crit->not;
    $boucle = &$boucles[$idb];
    $id = $boucle->primary;
         $boucle->order[] = "'TRIM(LEADING \'los \' FROM TRIM(LEADING \'el \' FROM TRIM(LEADING \'il \' FROM TRIM(LEADING \'the \' FROM TRIM(LEADING \'le \' FROM TRIM(LEADING \'la \' FROM TRIM(LEADING \'l\\\\\'\' FROM TRIM(LEADING \'les \' FROM LOWER(titre)))))))))'";
}

Et voici ce que j’ai pour la boucle :

<BOUCLE_listefilms(ARTICLES){id_rubrique}{parTitreFilm}>
    <option value="[(#URL_ARTICLE)]">[(#TITRE)]</option>
</BOUCLE_listefilms>

Pour la version de spip, je ne sais pas... Je ne peux pas dire mieux ;)
Bon courage,


Trier les articles par titre sans "le, la, les..."

2 mars 2007 08:19

Tout d’abord merci pour ta rponse,

Un problème persiste hargggg !!

Voil ma boucle :

<BOUCLE_rubrique(RUBRIQUES){id_rubrique}{par titre}>
    <h1 class="contenu">#TITRE</h1><BR><div class="texte">[(#TEXTE|justifier)]</div>
</BOUCLE_rubrique>
               
                 <BOUCLE_rubrique2(RUBRIQUES){id_rubrique}{par titre}>
                        
                         <BOUCLE_articles_pagination(ARTICLES){id_secteur}{parTitreSans}{inverse}{titre==^[AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz]}>
             </BOUCLE_articles_pagination>
           [pages : (#TOTAL_BOUCLE|pagination{debut_page,20})]
           </B_articles_pagination>
                        
                         <BR><BR>
                 <BOUCLE_rubrique3(ARTICLES){id_secteur}{titre==^[AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz]}{id_article !=18}{id_article !=481}{parTitreSans} {debut_page,20}>
                    <a href="#URL_ARTICLE"><img src="navpics/fleche.gif" width="10" height="10">&nbsp;#TITRE</a><br>
                  </BOUCLE_rubrique3>
</BOUCLE_rubrique2>

J’ai une fct qui me dcoupe le rsultat en pages,

Elle vient de spipcontrib :

/*
*   +----------------------------------+
*    Nom du Filtre :    pagination                                              
*   +----------------------------------+
*    Date : dimanche 22 aot 2004
*    Auteur :  James (klike<at>free.fr)
*   +-------------------------------------+
*    Fonctions de ce filtre :
*     affiche la liste des pages d'une boucle contenant
*     un critre de limite du type {debut_xxx, yyy}
*   +-------------------------------------+
*  
* Pour toute suggestion, remarque, proposition d'ajout
* reportez-vous au forum de l'article :
* http://www.uzine.net/spip_contrib/article.php3?id_article=663
*/

function pagination($total, $position=0, $pas=1, $fonction='') {
 global $clean_link;
 global $pagination_item_avant, $pagination_item_apres, $pagination_separateur;
 tester_variable('pagination_separateur', '&nbsp;| ');
 if (ereg('^debut([-_a-zA-Z0-9]+)$', $position, $match)) {
   $debut_lim = "debut".$match[1];
   $position = intval($GLOBALS['HTTP_GET_VARS'][$debut_lim]);
 }
 $nombre_pages = floor(($total-1)/$pas)+1;
 $texte = '';
 if($nombre_pages>1) {
   $i = 0;
   while($i<$nombre_pages) {
     $clean_link->delVar($debut_lim);
     $clean_link->addVar($debut_lim, strval($i*$pas));
     $url = $clean_link->getUrl();
     if(function_exists($fonction)) $item = call_user_func($fonction, $i+1);
     else $item = strval($i+1);
     if(($i*$pas) != $position) {
       if(function_exists('lien_pagination')) $item = lien_pagination($url, $item, $i+1);
       else $item = "<a href=\"".$url."\">".$item."</a>";
     }
     $texte .= $pagination_item_avant.$item.$pagination_item_apres;
     if($i<($nombre_pages-1)) $texte .= $pagination_separateur;
     $i++;
   }
   //Correction bug: $clean_link doit revenir  son tat initial
   $clean_link->delVar($debut_lim);
   if($position) $clean_link->addVar($debut_lim, $position);
    return $texte;
 }
 return '';
}

Ds que je place ta fct j’ai une erreur de parsing ?

Parse error : parse error, expecting `’(’’ in e :\dev\pur\spip_pur\spip-v1-8-1\inc-calcul.php(109) : eval()’d code on line 195

Voil as-tu une idée ?

Par avance merci


Trier les articles par titre sans "le, la, les..."

2 mars 2007 09:10

Je ne vois pas d’où peut venir le Pb... Je ne pense pas que cela vienne de la pagination qui intervient après... Je ne pense pas que cela vienne de la version car je suis en 1.8.2 e... (avec un correctif pour une faille de sécurité mise à jour pour la 1.8.2)

Est-il nécessaire de filtrer les articles qui commenent par une lettre de l’alphabet ? titre==^[aAbB...zZ] (équivallent à titre==^[a-zA-Z] non ?) ? peux tu essayer sans ?


Trier les articles par titre sans "le, la, les..."

2 mars 2007 09:30

j’ai essayé sans les lettres de l’alphabet : marche pas !

j’ai essayé sans la découpe de page : marche pas !

j’ai essayé avec ta boucle toute seule : marche pas !

tjr la même erreur :

Parse error : parse error, expecting `’(’’ in e :\dev\pur\spip_pur\spip-v1-8-1\inc-calcul.php(109) : eval()’d code on line 151

là je déprime ( ;_ :)


Trier les articles par titre sans "le, la, les..."

2 mars 2007 09:41

petite précision je suis en 1.8.1 et pas en 1.8.2 !!

pitêtre que cela vient de là ?


Répondre à la question


Un message, un commentaire ?
  • (Pour créer des paragraphes, laissez simplement des lignes vides.)

  • Vous pouvez étiqueter cette page de forum avec les mots-clés qui vous semblent les plus appropriés ; ils permettront aux prochains visiteurs du site de mieux se repérer :

  • Installation, mise à jour

    Utilisation de l’espace privé

    Administration, gestion, configuration du site

    Créer ses squelettes

Qui êtes-vous ? (optionnel)
  • [Se connecter]


squelettes-dist/spip.png voir le squelette de cette page