‹ 

Adextre

Personnalisation des adresses de Dotclear avec myUrlHandlers

Ce matin, en ouvrant mon blogue, un détail m’a interpellé : le format des adresses. Ainsi, avec Dotclear, l’adresse des billets ressemble à quelque chose comme monsite.fr/post/mon-billet.

« Post » ? Moins mon site comporte d’anglois, mieux je me porte ! À la place, je voulais qu’il affiche monsite.fr/billet/mon-billet.

Autrefois, l’extension myUrlHandlers permettait cela mais, depuis, elle a disparu du répertoire de DotAddict. Je l’ai finalement retrouvée sur une page obscure du site de Dotclear, téléversée sur mon blogue et activée.

Ensuite, je me suis donc rendu dans les paramètres de l’extension pour la configurer mais, au moment de l’enregistrement, un message d’erreur s’est affiché, mettant en cause la ligne 55 du fichier index.php. Il fallait que ça arrive ! Si Dotclear continue d’être mis à jour régulièrement, ce n’est pas le cas de cette extension, aujourd’hui abandonnée, dont la dernière version date d’il y a plus de dix ans – une éternité dans l’Internet !

Je suis allé voir la ligne en cause, sans trop d’espoir de correction car je suis un piètre développeur autodidacte. Voici ce que j’ai trouvé :

array_walk($w,create_function('&$v,$k,$h','$v = array_keys($h,$v);'),$handlers);

Pour être honnête, je ne comprends strictement rien à cette ligne infâme. En revanche, le message d’erreur indiquait que la fonction coupable était create_function. C’est là que j’ai découvert qu’elle était obsolète depuis la version 7.2 de PHP et qu’elle avait été supprimée à partir de la 8.0. Or, j’utilise une version supérieure côté hébergeur, et Dotclear requiert actuellement la version 7.4 au minimum. Tôt ou tard, en l’état, cette extension était vouée à dysfonctionner, à moins qu’elle fût actualisée.

Partant de ce constat, j’ai cherché à remplacer la fonction create_function, et je suis tombé sur un billet de blogue qui explique que :

$callback = create_function('$matches', "return strtolower(\$matches[1]);");

équivaudrait à :

$callback = function ($matches) {
     return strtolower($matches[1]);
};

J’ai donc appliqué cet exemple à la ligne fautive de l’extension, ce qui m’a donné :

$v = function (&$v,$k,$h) {
    return array_keys($h,$v);
};

array_walk($w,$v,$handlers);

Je ne comprends pas davantage ce code, qui est un peu plus long que l’original, mais, surprise ! Il fonctionne !

Si vous utilisez Dotclear et que myUrlHandlers vous intéresse, j’ai publié une version actualisée sur GitHub.


Mise à jour du 29 novembre 2022 :

Ma modification de cette extension a été reprise et approfondie par JcDenis sur GitHub. myUrlHandlers est même désormais proposé au téléchargement sur DotAddict, ce qui est une excellente nouvelle.

Billet précédent :
Billet suivant :
Écrire un commentaire


Balisage Markdown autorisé.





Écrire le jour de la semaine. Exemple : lundi.
Ajouter un rétrolien
https://adextre.blog/retrolien/38

Répondre par courriel