Chapitre 2 sur 20

Moteur de blog, CMS ou Framework ?

Laisser un commentaire

À sa sortie en 2003, WordPress est initiallement conçu comme un moteur de blog. Au fur et à mesure, avec son écosystème grandissant et l’ajout de fonctionalités au cœur même de l’outil, on le considère souvent comme un CMS.

Cependant, le fait qu’il soit si extensible par l’ajout de code permet clairement de le ranger dans la catégorie des frameworks.

WordPress est un framework

D’après Wikipedia, voici ce qu’est un framework web :

Un framework web est un framework créé pour supporter le développement d’applications web, notamment des sites, des webs services et des API.

Comme tout framework web qui se respecte, WordPress offre toutes les fonctions de base nécessaire à un projet web.

WordPress est un peu un cas à part, on peut dire qu’il s’agit d’un framework très spécialisé qui intègre un CMS. Le fait qu’il soit très spécialisé le rend encore plus efficace pour les projets auxquels il est adapté.

Mieux qu’un framework pur ?

On ne peut s’empêcher de le comparer aux grands frameworks PHP tels que Symfony, Laravel ou CakePHP. Il n’y a pas de mieux ou moins bien, je m’explique.

Comme WordPress est spécialisé, on déconseillera son usage pour des projets métiers très spécifiques. Par exemple, lorsque j’ai travaillé sur une plateforme de SMS Marketing (achat et expédition de campagnes de SMS), WordPress ne me semblait pas adapté. Ça aurait sûrement pu fonctionner, mais j’aurais du lutter contre le CMS tout en tirant peu profit de ce qu’il a à offrir.

Le e-commerce est un assez bon exemple. Cela reste en effet un site web, mais c’est plus complexe qu’un classique site vitrine. Lorsque l’on veut créer un site e-commerce, deux choix sont possibles : coder from scratch ou utiliser un outil spécialisé dans le e-commerce.

Quel outil pour quelle situation ?

Il n’y a fondamentalement pas de mieux ou moins bien. Par exemple, en 2019, quand j’ai développé la plateforme de SMS marketing, WordPress n’était pas indiqué. Le client arrive sur le site, achète des crédits de SMS, importe ses contacts, rédige son SMS et programme son envoi. Chaque utilisateur dispose d’un dashboard permettant de visualiser toutes les statistiques de ses campagnes.

On comprend ici tout de suite que le besoin est très spécifique et les solutions clefs en main n’offriront pas les fonctionnalités nécessaires (du moins seulement une infime partie). De plus, il faudrait parfois lutter contre le fonctionnement interne pour arriver à nos fins.

Lorsque l’on sort totalement du champ d’application de l’outil, il est souvent plus rapide de créer from scratch que d’adapter l’existant. Dans ce cas, on se tourne vers notre langage et framework de prédilection.

En revanche, lorsque j’ai créé le site du joaillier Laurenz Baumer, lequel vend des produits, la question ne s’est pas posée un seul instant. La vente de produit est un grand classique, autant bénéficier d’outils éprouvés plutôt que de perdre du temps à en créer de nouveaux.

Frameworks e-commerce

Pour être tout à fait juste, la plupart des frameworks populaires (quel que soit le langage) disposent d’outils dédiés au e-commerce afin de gagner en efficacité. Ces outils offrent une boîte à outils répondant aux besoins habituels des sites e-commerce.

Dans le monde PHP on a par exemple Bagisto (Laravel) ou Sylius (Symfony). Comme je l’ai déjà mentionné, le meilleur outil est celui qui est adapté au projet et maîtrisé par l’équipe (afin d’être fiable et efficace).

Ces frameworks proposent encore – à mon avis – trop peu de choses “out of the box” comparé à WordPress et vont nécessiter de maîtriser le framework sous-jacent pour réellement ajouter nos propres briques de code.

CMS concurrents

Il y a également la concurrences d’autres CMS, généralistes : Drupal, Joomla, CraftCMS, Spip ; ou spécialisés : Magento, PrestaShop etc. La liste est longue, CloudWays propose une comparaison des plus populaires.

On ne peut évidemment pas affirmer que WordPress est simplement mieux que toutes ces solutions. Chacune possède ses forces et faiblesses, nécessite plus ou moins de prise en main et excelle dans un domaine particulier.

Spip par exemple, dont le développement, français 🇫🇷, a commencé 2 ans avant celui de WordPress est très pointu en matière éditoriale et de gestion de contenu. Il est à ce titre utilisé par certains journaux (Le Monde diplomatique) et la plupart des ambassades française.

[Il] se distingue par le soin apporté aux standards de l’édition (respect des règles typographiques, organisation des rôles des participants) et par l’attention portée au multilinguisme et aux mécanismes favorisant l’édition collaborative.

Wikipedia

Comme pour toute considération, le bon CMS est celui qui est maintenu, adapté au projet et maîtrisé par l’équipe de développement. WordPress dispose d’une énorme communauté et d’un nombre de plugins faramineux.

WordPress est généraliste et extensible dans l’âme. Par exemple si l’on souhaite ajouter un forum et des fonctionnalités sociales à un site e-commerce pour créer une communauté : aucun problème. Pour Magento, PrestaShop et d’autres, il faudrait simplement se tourner vers des outils externes, et se faisant, perdre la possibilité d’avoir un unique compte utilisateur ou devoir batailler pour partager les informations de la base de données.

C’est à mon sens toute la force de WordPress : fournir un outil de base simple et performant, extensible presque à l’infini et activement soutenu par une communauté gigantesque.

Bien choisir

Au risque de me répéter, le bon outil est un outil adapté ! On n’utilise pas un marteau avec des vis. J’ai donc plusieurs solutions que j’utilise en fonction du type de projet.

Je suis spécialiste JavaScript, de ce fait :

Dans le prochain chapitre, nous allons aborder explorer plus en détails le cas particulier des sites e-commerce.

Commentaires

Rejoignez la discussion !

Vous pouvez utiliser Markdown pour les liens [ancre de lien](url), la mise en *italique* et en **gras**. Enfin pour le code, vous pouvez utiliser la syntaxe `inline` et la syntaxe bloc

```
ceci est un bloc
de code
```