Mon nouveau site est en ligne !

Enfin ! C’est donc Wordpress qui a été choisi comme CMS pour mon site. Je pense que j’ai essayé la quasi totalité des CMS open source qui existent… (CMS matrix permet de rechercher et comparer un nombre impressionnant de CMS et Open Source CMS permet d’en tester quelques-uns). Et j’ai été vraiment déçu, notamment par le fait qu’aucun CMS ne propose de solution satisfaisante pour faire un site multilingue. Et Wordpress non plus ! Il y a bien drupal/civicspace, qui est de loin le meilleur CMS que j’ai testé, mais il reste un peu lourd… Et le multilinguisme n’est pas implémenté en standard mais avec un plugin… Il y avait Joomla, qui n’est malheureusement pas XHTML/CSS, bourré de tables, et le layout reste en partie contrôlé par le CMS. Dommage, le multilinguisme marchait bien avec le plugin BabelFish. Reste typo3, qui est tellement compliqué que pour créer une page j’y ai passé 3 heures.

J’ai donc installé Wordpress 2.0. Il m’a fallu créer un nouveau template et évidemment du XHTML/CSS sémantiquement correct s’imposait. Le système de templates est plus compliqué que celui de dotclear, il faut jongler avec plusieurs fichiers.

Restait ce problème de multilinguisme. J’ai essayé tous les plugins pour le multilinguisme et aucun ne m’a convaincu.

Finalement, j’ai créé moi même un plugin, YammYamm (Yet another multilingual manager²) ce qui m’a permis de connaître l’API des plugins pour Wordpress. Un peu fastidieux au début, mais une fois qu’on a compris le truc c’est assez agréable. Il me reste pas mal de choses à faire pour le rendre clean, et j’ai déjà envie d’y rajouter des fonctionnalités et de créer d’autres plugins pour pallier certains défauts de Worpdress.

Dès que le code est clean, je le mettrai en téléchargement.

Il a ensuite fallu rendre le template multilingue. Pour cela, j’ai dû découvirir le principe du i18n et des fichiers .po et .mo, qui consituent des “fichiers langues” contenant les traductions de chaque terme utilisé.

Ensuite au lieu d’écrire par exemple :

<a>Contact</a>

On écrira :

<a><?php _e('Contact',TEMPLATE_DOMAIN); ?></a>

Il y a pas mal de choses qui m’ont manqué dans Wordpress, et qui m’ont donné envie de créer des plugins pour y remédier.

Par exemple : Il n’y a pas de fonction pour afficher le menu des pages en attribuant une classe à tous les parents de la page courante. Pour comprendre, allez dans “Téléchargements” et dans une sous-page, vous verrez que le menu “Téléchargements” n’est plus activé…

Autre exemple : Wordpress utilise un système de “Tags” (qui n’a rien à voir avec les tags de catégories). J’aurai aimé pouvoir appeler n’importe quelle fonction de Wordpress ou d’un plugin depuis une page ou un billet. Et ce n’est pas possible, il faut créer un filtre dédié à chaque fonction. J’ai commencé un petit bout de plugin pour ça.