Accueil du site > Carnet de prairies > Semences SPIP > URLs en minuscules

URLs en minuscules

Des URLs Propres de SPIP, mais tout en minuscule...

samedi 3 janvier 2009, par Matthieu Marcillaud

A partir de SPIP 2.0, il existe un pipeline permettant de modifier les urls créées avant de les enregistrer dans la base de donnée. Par conséquent, il est possible de les modifier comme on le souhaite.

Pipeline creer_chaine_url

Je ne reviens pas sur l’utilisation d’un pipeline, nous allons ici imaginer qu’on modifie un fichier d’options d’un site dans config/mes_options.php.

Le pipeline creer_chaine_url reçoit les arguments de type d’objet et d’id_objet demandé (exemple : rubrique et 8), ainsi que la valeur actuelle de l’url calculée. Il est possible donc de complètement la recalculer, ou simplement de l’adapter à ses besoins, comme pour ici : la passer en minuscules.

  1. <?php
  2. $GLOBALS['spip_pipeline']['creer_chaine_url'] .= '|my_minuscules';
  3. // passer simplement l'url en minuscule
  4. function my_minuscules($flux){
  5.         $flux['data'] = strtolower($flux['data']);
  6.         return $flux;
  7. }
  8. ?>

Mettre à jour ses URLs

Pour que le pipeline soit pris en compte, il faut supprimer le fichier tmp/charger_pipelines.php. Enfin, pour que les nouvelles URLs se chargent, vous devez

  • soit effacer la table spip_urls (mais vous perdez alors toutes vos anciennes URLs qui ne seront plus dirigées sur les nouvelles),
  • soit cliquer sur le bouton "Voir en ligne" depuis l’interface privée, de chacun de vos articles ce qui a le mérite de recréer l’url. Sauf que... Sauf que si on utilise (comme moi !) des tables MySQL en format "utf8_general_ci" (ci voulant dire "case insensitive"), MySQL ne me fait pas de différence entre une recherche de ’Carnet’ et de ’carnet’ et considère donc lorsqu’on change juste la casse que l’URL est déjà stockée (et SPIP ne la met pas à jour). Du coup, cette seconde solution n’est pas toujours la meilleure :)

4 Messages de forum

  • URLs en minuscules Le 5 janvier 2009 à 12:46 , par tetue

    Ah merci ! Ces majuscules dans les urls me rendaient dingues !

    Répondre à ce message

  • URLs en minuscules Le 10 février 2009 à 16:08 , par Nicolas Hoizey

    Avec les URL arbo c’est natif, il « suffit » de mettre ça dans mes_options.php :

    define('_url_arbo_minuscules',1);

    Ce serait effectivement bien que ce soit généralisé...

    Répondre à ce message

  • URLs en minuscules Le 17 mars 2009 à 11:00 , par tetue

    C’est natif dans les URLs arbos me confirme-t-on effectivement, mais les majuscules restaient collées à la casserole parce que j’avais eu la mauvaise idée d’essayer d’autres ré-écritures avant d’adopter les "arbos". Ça cafouille...

    Répondre à ce message

  • URLs en minuscules Le 28 août 2009 à 18:11 , par Matthieu Marcillaud

    Il y a aussi pour les url propres maintemant :

    1. define ('_url_minuscules',1);

    Répondre à ce message

Répondre à cet article


Site réalisé avec SPIP • © 2001-2012 marcimat. Ma Graine .Net • ArchivesRSS 2.0