Discutez avec nous 😊
Logo WhatsApp

ProcessWire – LE CMS dont vous avez besoin

Cela faisait des mois que j’étais à la recherche d’un CMS à la fois simple, souple, puissant, sûr et élégamment codé. Lorsque j’ai réalisé le site du collège de Reconstruction Posturale, je me suis promis de me lancer sérieusement dans ces recherches pour ne plus avoir à construire un site malgré le CMS.

J’en ai éliminé deux d’entrée de jeu :

J’en ai ensuite exploré quelques uns

Et puis, je suis tombé sur ProcessWire… ☀️. Et là, c’est la révélation.

Présentation

ProcessWire est un CMS (et un CMF : Content Management Framework) open source, léger (30 Mo et moins de 2300 fichiers à l’installation) utilisant PHP et MySQL – donc facilement installable sur un serveur en shared hosting.  Mais cette légèreté ne grève en rien son potentiel. Bien au contraire.

Apparu en 2003, il représente… 0,1 % des sites basés sur un CMS. Ça ne fait pas beaucoup, mais il y a plusieurs raisons à cela.

Que demander de plus ? 😊

Paradigmes

Page, template, field. Ces trois concepts sont les piliers de ProcessWire.

Page

Dans ProcessWire, tout est « page ». Le terme de page peut ici prêter à confusion. J’aurais plutôt tendance à appeler ça « objet ». Une page peut par exemple être une page de votre site web – jusque là, rien de surprenant. Mais une page peut également être une catégorie, un tag… En fait, n’importe quoi destiné à stocker du contenu.

Template

Toute page est associée à un template. Un template est une collection de champs (fields) que vous avez choisis. Par exemple, un template typique d’une page de type article, comme celle-ci, est basé sur un template qui possède les champs suivants :

Et tout ce que vous jugerez nécessaire. Auteur, tags, catégorie, sous-catégorie…

Attention : un template est une collection de champ. Si vous prévoyez d’afficher les pages associées à votre template sur le site, il faudra lui adjoindre un template PHP dans lequel vous organiserez le contenu de votre page en HTML.
Si votre template n’est pas destiné à être affiché directement (par exemple, votre template tag, destiné à gérer les différents tags des articles), alors il n’y a nul besoin de créer un fichier PHP associé.

Field

Un champ est un type d’entrée. Un nombre, du texte brut, du texte formaté en HTML, en ParseDown, une image unique, une collection d’images, une autre page…

Vous définissez vos champs, puis, pour chacun de vos templates, vous choisissez les champs pertinents à lui associer.

Pour reprendre l’exemple de la page d’article, basée sur le template article : vous associez les champs mentionnés à ce template, sachant qu’un champ peut être associé à plusieurs templates. Ainsi, si vous créez un template Page standard, vous pourrez également lui associer le champ body et le champ extrait.

De l’orienté objet pour votre contenu

On peut voir le concept de pages comme des objets basés sur des classes que sont les templates. Les fields sont des propriétés de ces classes. Une fois ce paradigme intégré, vous avez au bout des doigts un outil d’une puissance et d’une souplesse extraordinaires !

Dans la pratique

Voilà plusieurs sites vitrines que je réalise avec ProcessWire. Je sais maintenant optimiser mon organisation. À chaque nouveau site, je découvre un nouvel aspect de ce CMS et je suis impressionné par l’élégance de son API.

Je gagner du temps par rapport à WordPress, et le HTML produit est beaucoup plus propre et simple. Les performances sont remarquables, même sans ajouter de cache.

À propos de l’API

La learning curve de ProcessWire est bien plus rapide que celle de WordPress, car il a été bien mieux pensé et ne préjuge en rien de vos besoins.

À titre d’exemple, vous voulez récupérer tous les tags dans votre page ? Hé bien une seule ligne suffit : $pages->find("template=tag") et hop ! le tour est joué.

Pour accéder à l’extrait de la page actuelle, faites $page->excerpt (si tant est que vous avez appelé ce champ excerpt).

Votre page est trop complexe pour être mise en forme avec entièrement avec TinyMCE ? Aucune importance. Découpez-la en sections, et placez le contenu de ces sections comme vous le souhaitez dans votre template de page. C’est clair pour l’utilisateur final et surtout, il ne peut rien casser.

Possibilités natives et modules

Nativement, ProcessWire gère pas mal de trucs, dont le multilinguisme. Il existe un certain nombre de modules (les plugins de ProcessWire) gratuits couvrant l’essentiel de vos besoins.

Bien sûr, il y a beaucoup moins de modules disponibles sur ProcessWire que sur WordPress. Mais, en même temps, comme il est très simple de développer des fonctionnalités, il n’y a pas besoin d’un module pour chaque truc que vous voulez faire.

Pour des fonctionnalités lourdes, telles que du e-commerce, il existe des modules payants (à un prix très raisonnable).

Il faut savoir que, contrairement à WordPress, tous les modules proposés (gratuits comme payants) ont été longuement testés par les développeurs du core du CMS. Ainsi, vous êtes sûr de leur sécurité et de leur compatibilité.

Du côté de l’utilisateur final

L’interface du back-office est très épurée. Et comme c’est vous, développeur avisé, qui définissez les différents profils et leurs droits, si votre utilisateur final n’y connaît rien, vous pouvez toujours limiter ses actions de manière à rendre le site incassable.

Back-office de ProcessWire

Un dashboard personnalisé

Si la partie admin par défaut ne vous plaît pas, vous pouvez créer, grâce au module Dashboard, une page admin personnalisée pour y placer toutes les actions et les tableaux que vous souhaitez rendre accessibles immédiatement.

Dashboard de ProcessWire

La sécurité

D’après ses concepteurs, la sécurité est la priorité n°1.

Je cite un article de l’agence Angle Web.

En 15 ans d’existence, aucune faille de sécurité n’a mis en péril la fiabilité et la robustesse de ce CMS. Depuis le début du projet Processwire, la sécurité est au cœur de la conception et des choix de développement. C’est un gage de qualité qui garantit à nos clients un outil stable.

Finies les mises à jour constantes, avec à chaque fois le risque d’apparition d’une incompatibilité. Vous mettez votre site en ligne et vous ne vous en occupez plus !

L’impact écologique de votre site

C’est important pour vous ? Vous auriez tort de ne pas répondre oui à cette question.

Un site léger occupe moins de place sur le serveur et se charge plus rapidement. Donc en plus de limiter son impact écologique, l’expérience utilisateur est meilleure, et votre site est plus facile à maintenir et à sauvegarder.

Mise en ligne d’un site en local

Une chose qui m’agace beaucoup avec WordPress, c’est cette idée stupide d’utiliser des url absolues dans la base de données. À chaque fois que vous faites passer le site d’un environnement local à un serveur en ligne, il faut aller éditer la base de données pour mettre à jour les liens.

Avec ProcessWire, c’est inutile. Vous transférez votre base de données, faites une synchronisation des fichiers, et voilà !

Un mot à propos de TinyMCE

TinyMCE est un RTE très bien pensé. Vous pouvez facilement le personnaliser pour l’adapter aux besoins et aux connaissances techniques de votre client. Rien à voir avec Gutenberg.

Il n’est par contre pas envisageable de créer des mises en forme trop complexe avec cet éditeur. Pour cela, il est préférable d’adopter une stratégie de découpage de la page en différentes sections et d’y associer à chaque fois un champ TinyMCE.

Et la communauté ?

Lors du developpement de mon premier site, je suis inévitablement tombé sur des petits problèmes. Posez votre question sur le forum de ProcessWire : une réponse sympathique vous sera apportée très vite par des experts du CMS. Que du bonheur !

Bilan

À chacun son style…

Moto de sport BMW

ProcessWire

Harley avec pilote bedonnant

WordPress

Quelques liens utiles

Tenté par l’aventure ? Voici une playlist Youtube qui va vous permettre de découvrir comment construire un blog avec ProcessWire. Ça va vous permettre de mieux appréhender les paradigmes de ProcessWire, même si leur documentation est assez bien faite.