0

Plone : Un CMS ergonomique et open source du monde Python

Un des premiers systèmes populaires de gestion de contenu du monde « Python » s’appelle « Plone ».

Depuis bientôt 20 ans, ce système a toujours su évoluer au niveau des paradigmes pour les développeurs back-end, les intégrateurs de contenus, et les développeurs front-end, de manière à permettre la mise en œuvre de projets de complexité moyenne à très haute. Oui, car Plone n’est pas adapté pour les sites web simples, c’est même déconseillé !

Ce CMS très ergonomique s’appuie principalement sur le serveur d’application web « Zope ».

 

Basé sur Zope, un des précurseurs des frameworks web Python

Zope est un mega-framework web souvent considéré par les « insiders » comme le « grand-père » des frameworks tels que Django. Les développeurs de Zope avaient compris des tas de choses essentielles en termes de possibilités pour des projets web complexes, qu’on ne trouve pas forcément dans les frameworks venus après, et dont Plone bénéficie.

On retient en particulier la base de données orientée objet, intégrée au serveur d’application, la « ZODB » (Zope Object Database). La ZODB est un système de persistence des données liées à des classes d’objets créées pour représenter les contenus. Précisons, si c’est nécessaire, que ce n’est pas un ORM ; c’est une base de données, écrite en Python, que l’on classerait parmi les systèmes NoSQL. Ce système supporte entre autres :

  • les transactions,
  • l’historisation des changements (révisions), ce qui offre une fonctionnalité « Undo » permettant de revenir en arrière sur des révisions au niveau d’un objet (un objet de contenu ou un objet technique),
  • les systèmes de stockage « plugable » (filestorage, blobstorage, temporarystorage, etc…)

Avantage intéressant, pour un développeur dans ce contexte, le paradigme qui consiste à installer une base de données SQL et mettre en place une connexion à cette base de données avant de pouvoir démarrer son projet n’existe. En tout cas, pas par défaut, et pas pour la plupart des projets. Ici, le développeur pense plutôt « objets », avec des objets construits à partir de classes d’objets et interfaces programmatiques spécifiques. Pour de la gestion de contenu, les objets représentent les éléments de contenus, avec une gestion hiérarchique possible (dossiers, sous-dossiers, etc), et ils sont automatiquement persistés grâce aux mécanismes de la ZODB.

Quant aux autres mécanismes fondamentaux pour la mise en œuvre d’applications web, ils sont apportés par des composants complémentaires tels que :

  • le « publicateur d’objets », qui met en œuvre tout ce qui permet aux objets d’être accessibles via des requêtes web,
  • le sous-système « Zope Page Templates », pour la présentation des objets de contenu et le développement d’interfaces (pages HTML),
  • le serveur web interne « ZServer », pour servir les requêtes HTTP, et éventuellement FTP et/ou WebDAV,
  • le mécanisme de contrôle d’accès basé sur des « permissions » et des « rôles » attribués aux comptes utilisateurs,

 

Plone, un CMS riche en fonctionnalités pour les projets d’entreprises

En intégrant tout ce qu’apporte le framework de base, Zope, les développeurs de Plone sont allés plus loin en spécialisant certains composants, et en ajoutant d’autres, de manière à fournir les services qu’exigent un CMS de haute volée, et pouvant être optimisé pour la montée en charge.

L’atout principal de ce CMS est son interface utilisateur / interface d’administration, et la puissance donnée aux intégrateurs de contenus, via celle-ci.

Mais les avantages de Plone, pour des projets exigeants, sont nombreux. On peut citer entre autres :

  • L’organisation des contenus du site utilisant un modèle hiérarchique, nativement, et permettant des URLs propres et intuitives. Grosso-modo, il n’y a rien de spécial à faire, l’intégrateur de contenus peut travailler comme il le ferait sur le système de fichiers de son ordinateur, en créant des dossiers/sous-dossiers et des documents.
  • Le moteur de recherche intégré et fonctionnel dès la création d’un site.
  • La possibilité de se connecter à un annuaire LDAP pour les comptes utilisateurs du site, grâce à un module d’extension.
  • La possibilité de se connecter à des bases de données SQL pour des fonctionnalités complémentaires à la publication de contenu classique.
  • La possibilité de créer des sites multilingues, grâce à un module d’extension.
  • Le modèle de sécurité, permettant à l’administrateur du site d’autoriser l’accès aux contenus selon les besoins du projet, de manière fine, y compris au niveau local dans des sections (au sein de l’arborescence des contenus).
  • Un riche écosystème de modules d’extension et de solutions, grâce à la communauté de développeurs et d’utilisateurs.
  • Python et toutes ses possibilités. Chaque fois que vous avez un besoin ou un cas d’utilisation, si vous pouvez le résoudre avec du développement Python, alors vous pouvez le résoudre dans le contexte d’un projet Plone. Vous partirez à priori du code Python nécessaire (bibliothèques et/ou APIs, et code faisant appel à ces éléments) que vous allez « packager » dans un module d’extension pour le système Plone. Évidemment, c’est une question de compétences à acquérir ; au-delà de savoir développer en Python, il faut connaître un certain nombre de protocoles, APIs internes et pratiques de développement pour Plone.

 

Pour en savoir plus sur Plone

Pour en savoir sur Plone, ses possibilités et les retours d’expérience d’utilisateurs :

  • Visitez le site officiel https://plone.org,
  • Visitez le site de démonstration https://demo.plone.org.
  • Contactez-nous pour en discuter et profiter de nos 15+ années d’expérience avec ces technologies.

Advertisement

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Scroll to top