eZ Publish

Fiche logiciel validé
  • Création ou MAJ importante : 24/10/12
  • Correction mineure : 24/10/12
Mots-clés
Pour aller plus loin

eZ Publish : système de gestion de contenu Web (CMS) puissant, ouvert et évolutif

Description
Fonctionnalités générales

eZ Publish est un système de gestion de contenu Open Source (en anglais CMS, Content Management System) très puissant, ouvert et évolutif, qui permet de développer des sites web dynamiques en mode mono ou multi-sites, créé en 1999 par une société norvégienne eZ systems.

eZ Publish est open source, disponible soit gratuitement, soit dans le cadre d’une solution professionnelle “eZ Publish Premium”, incluant support , garanties et maintenance.

Ses principaux atouts sont :

  • des fonctionnalités intégrées et prêtes à l'emploi répondant aux besoins et attentes courants des webmasters,
  • un environnement technique offrant des possibilités de personnalisation et de création d'extensions inégalées (flexibilité du noyau du moteur de contenu),
  • un modèle économique open source associant tous les atouts des logiciels Open Source (coût, temps de mise en œuvre et transparence),
  • eZ Publish est doté d'un backoffice permettant de décrire les "classes" des objets qui seront utilisés dans chaque site, et d'un frontoffice, qui propose un éditeur de type wysiwyg (avec extension multiupload) ou publication à partir de Word ou OpenOffice,
  • eZ Publish est développé en PHP, s'appuie sur une base de données (MySQL, mais aussi Oracle et PostGreSQL), et a développé son propre langage de template pour décrire le design des pages,
  • une gestion très fine des rôles, droits et groupes d'utilisateurs permet d'organiser la mise à jour du site en équipes,
  • eZ Publish dispose d'un versioning intégré, d'un support multilingue, d'un système de workflow et d'une conception optimisée pour le référencement, d'un moteur de recherche assez sophistiqué (extension eZ Find),
  • un système de caches serveur assez sophistiqué permet d'optimiser la régénération des pages et la vitesse d'affichage du site.
  • eZ Publish est basé sur des standards ouverts et reconnus :
  • PHP5, XHTML, CSS, XML, RSS, WebDAV, LDAP, SOAP, EXIF, OpenOffice.
Autres fonctionnalités

Architecture

  • eZ Publish est développé autour du robuste, populaire et open source environnement LAMP (Linux, Apache, MySQL et PHP).
  • Cependant, eZ Publish peut être également installé sur des serveurs Microsoft, Sun Solaris ou Mac OS X.
  • En plus de MySQL, eZ Publish supporte les bases de données Oracle et PostgreSQL.

Classes de contenu

eZ Publish dispose de datatypes (plus petite entité de stockage disponible) : ce sont par exemple des blocs XML, entier, date et heure, ligne de texte permettant de définir des classes pré-intégrées (ex : article, répertoire, utilisateur, commentaire, ...). On peut également enrichir ces datatypes et classes via développement, en fonction de ses besoins.

Structure interne d'eZ Publish

eZ Publish s'articule autour d'un kernel, de modules (moteur de recherche, gestion des utilisateurs, ...) et de diverses bibliothèques (ezxml, ezpdf, ...). L'arborescence du CMS se décompose ainsi :

Répertoire Contenu
bin Scripts PHP, Perl et shell principalement utilisés pour une maintenance manuelle du système et de mises à jour.
cronjobs Scripts PHP permettant d'automatiser les tâches de maintenance périodiques.
design Fichiers relatifs au design du site.
doc Documentation et fichiers consignant les évolutions et mises à jours des versions de eZ Publish.
extension Système de plugins.
kernel Fichiers du noyau, cœur d'eZ Publish.
lib Librairies générales.
settings Réglages, configuration par site/contexe.
share Fichiers de traductions des contenus statiques.
var Fichiers de cache, logs, et surtout fichiers de contenus uploadés.

Fichiers de configuration (settings)

  • Les fichiers de configuration par défaut, d’extension .ini, se trouvent dans le dossier settings.
  • Chaque fichier permet de contrôler le comportement d'une partie spécifique du système.
  • Les fichiers fournis par défaut listent exhaustivement et commentent les options disponibles. Ces fichiers de configuration par défaut ne doivent jamais être modifiés ! Il convient à la place de les surcharger. (et typiquement les placer dans le répertoire settings/override/).
  • Le fichier de configuration principal est le site.ini (le fichier settings/override/site.ini est donc le 1er fichier lu par le navigateur si la bonne pratique précitée est suivie).
  • Structure d'un fichier de configuration :
    • Un fichier de configuration est composé de blocs.
    • Chaque bloc contient un ensemble de réglages :
    • # This line contains a comment.
      [DatabaseSettings]
      Server=localhost
      User=allman
      Password=qwerty
      Socket=disabled
      SQLOutput=enabled
      # This line contains another comment.
      [ExtensionSettings]
      ActiveExtensions[]=ezdhtml

Gestion des sites via les siteaccess

  • Une seule instance d'eZ Publish peut gérer plusieurs sites.
  • Les sites sont gérés par le mécanisme de siteaccess, qui constitue un ensemble de réglages (settings).
  • Les siteaccess permettent d'utiliser des configurations (règles) totalement différentes pour chaque site (propre base de données, design dédié, dossier var spécifique).
  • Les règles des siteaccess doivent être spécifiées dans une surcharge globale du fichier de configuration site.ini (/settings/override/site.ini.append.php).
  • Ces règles contrôlent le groupe de paramètres devant être employé dans un cas particulier.
  • Un site eZ Publish classique se compose de deux siteaccess : une interface publique pour les visiteurs et une interface d'accès restreint pour les administrateurs.

Support multi-langue

  • Chaque langue est versionnée indépendamment.
  • La traduction du contenu statique, des éléments de design (menu,liens fixes, …) et messages d'erreurs est faite via i18n.
  • La gestion des langues se fait au niveau du siteaccess (1 par langue, pouvant partager le même design).

Modules et vues

  • Un module offre une interface web pouvant être utilisée pour interférer avec le système eZ Publish.
  • Certains modules offrent une interface avec des fonctionnalités du noyau, d'autres sont indépendants du noyau.
  • Le système fournit un ensemble de modules couvrant les besoins des tâches journalières les plus courantes.
  • Il est possible d'étendre le système en créant des modules personnalisés pour des besoins spécifiques. Ces modules devront être écrits en PHP (annuaire, agenda....).
  • Un module peut offrir des vues et/ou des fonctions fetch (fonctions d'interrogation).

Design

  • Le design recouvre tout ce qui permet au contenu du site d'être mis en forme et présenté.
  • Un design classique eZ Publish se compose de feuilles de style (CSS), de scripts javascript, de fichiers image (hors images de contenu), de fichiers de polices et de templates.
  • Un siteaccess impose, entre autres choses, le design devant être utilisé.
  • En utilisant différents siteaccess, il est possible de combiner différents contenus et designs.
  • Le code HTML final d'une page peut être une combinaison de fichiers provenant de divers designs.

Mécanisme de fallback

  • Si eZ Publish ne peut trouver un fichier de design spécifique (une feuille de style, un template, une image, etc, ...) dans le design principal, alors il essaie automatiquement de le chercher dans un autre design.
  • La déclaration des designs d'un site se fait dans le fichier site.ini du siteaccess concerné.

Templates

  • Les templates sont une composante fondamentale du design.
  • Un template est un fichier (X)HTML qui décrit la façon dont un type de contenu doit-être visualisé.
  • Tous les fichiers de template possèdent l'extension .tpl.
  • Outre du (X)HTML, un template peut contenir du code eZ Publish.
  • Le code de template eZ Publish permet de requêter le système et de résoudre les problématiques de code usuelles (itérations, conditions, structures de contrôle, conversions, etc, ...).
  • Le code spécifique à eZ Publish doit être placé à l'intérieur d'accolades ( "{" et "}" ).
  • Tout ce qui est compris à l'intérieur d'accolades sera interprété par le parser de template lorsque le template est traité.
  • Tout ce qui est à l'extérieur des accolades sera ignoré et sera envoyé au navigateur sans subir aucun traitement.
  • Le template principal de eZ Publish, nommé pagelayout.tpl, permet entre autres de déterminer la structure graphique du site.
  • Le nom de ce template principal doit être pagelayout.tpl et il doit être placé dans un sous-répertoire nommé templates d’un design.
  • Le template pagelayout.tpl est le template source appelant tous les autres templates.
  • Le système de surcharge de templates permet d'utiliser d'autres templates que ceux par défaut.
  • Exemple de surcharge dans le fichier de configuration override.ini.append.php :
  • # The name of the override.
    [special_folders]
    # The template that should be replace.
    Source=node/view/full.tpl
    # The template that should be used instaed of the one specified as the source.
    MatchFile=special_folder.tpl
    # The directory where the matchfile is located.
    Subdir=templates
    # Condition #1 : activates the override if the object is an instance of the folder class.
    Match[class_identifier]=folder
    # Condition #2 : activates the override if the object being accessed belongs to section number 34.
    Match[section]=34

Extension

  • Une extension peut correspondre à un site et plusieurs extensions peuvent être utilisées par plusieurs sites.
    Exemple: vous pouvez utiliser des extensions regroupant toutes les fonctionnalités identiques pour tous vos sites (export OpenOffice, éditeur wysiwig, vos bibliothèques JQuery, ...), et une extension spécifique à un site en particulier (dans laquelle il sera judicieux de placer votre dossier design/).
  • Elle se compose principalement de fichiers de configuration /settings et de fichiers de mise en forme /design, et éventuellement de modules spécifiques à développer en PHP.

Contrôle d'accès

  • eZ Publish contient un mécanisme de contrôle d'accès permettant de limiter l'accès à certains contenus ou à certaines fonctions.
  • Le système de contrôle d'accès est basé sur les éléments User (Utilisateur), User group (Groupe d'utilisateurs), Policy (Droit) et Role (Rôle).
  • Un User (utilisateur) est défini, sur le système, par un compte utilisateur valide.
  • Un User group (groupe d'utilisateurs) peut-être composé d'utilisateurs et d'autres groupes d'utilisateurs.
  • Un Policy (droit) est une règle autorisant l'accès à du contenu ou à certaines fonctions.
  • Un Role (rôle) est un ensemble nommé de droits.
  • Un rôle peut être assigné à un utilisateur ou à un groupe. Il est possible d'assigner un rôle avec des restrictions supplémentaires (affecter avec limitation).
  • La fonctionnalité permettant de restreindre un rôle est très utile lorsque plusieurs utilisateurs ayant des droits similaires doivent manipuler différentes parties de l'arbre de nœuds de contenu.
  • Plutôt que de créer un rôle pour chaque utilisateur, l'administrateur du site peut créer un rôle générique puis l'assigner avec différentes restrictions aux différents utilisateurs.

Workflows

eZ Publish est livré avec un mécanisme de flux de travail (workflow). Il permet d'effectuer différentes tâches avec ou sans interaction des utilisateurs (par exemple des cronjobs).

Interopérabilité

eZ Publish est développé en PHP et utilise des standard comme MySQL, XML, Ajax, SOAP.

Il est très aisé de développer des procédures en interaction avec d'autres applications externes. Par exemple : extractions des données d'un SI sous Oracle pour implémenter automatiquement les pages d'un site.

La version 5 à venir d'eZ Publish utilisera le framework Symfony 2, et permettra de coder les templates au format TWIG, tout en gardant une compatibilité avec les développements sous les versions précédentes : voir cet article.

Contexte d'utilisation dans mon laboratoire/service

Cas du LIRMM

  • 2 noyaux eZ Publish sont installés dans notre laboratoire :
    • 1 sur le serveur des applications Web utilisateurs (sites internes d'équipe, sites de congrès, ANR...)
    • 1 sur le serveur de notre site institutionnel http://nouveau-site.lirmm.fr
  • Nous utilisons la méthode host;uri, avec authentification ldap (annuaire sécurisé des comptes du laboratoire) pour la partie Intranet.
  • Nous avons développé 2 modules, annu et agenda, pour la recherche dans l'annuaire et la gestion des événements.
  • Nous extrayons les publications de notre site HAL-LIRMM et créons les objets correspondants par cronjobs afin de les afficher sur les pages annuaire et les pages de présentation de nos départements et équipes.
  • Les pages des équipes, les comptes éditeurs et administrateurs de ces pages sont également générées par cronjobs, par extraction des données de notre Système d'Information (sous Oracle 11g).
  • Nous gérons 1 site français et 1 anglais, avec possibilité de traduire les pages dans d'autres langues.
  • Pour la gestion de nos pages annuaire, nous avons créé la classe Lirmm-user à partir de la classe User, dont les attributs sont implémentés par cronjobs également, à partir des données de notre SI, puis la classe Annu-user, qui contient les éléments modifiables par web de chaque page annuaire.
  • Les objets Département et Equipe se décomposent également en objets SI et Web, selon la nature des données affichées sur ces pages.
  • Les administrateurs (accorder des droits d'édition à des groupes) et éditeurs des pages n'ont pas accès au "back office", toutes les mises à jour sont faites en "front office".

Cas de l'Observatoire Midi-Pyrénées

  • Un noyau eZ Publish est utilisé pour l'ensemble des sites web institutionnels.
  • Tous les sites utilisent une extension contenant toutes les fonctionnalités communes, et chaque site utilise en plus, une extension qui lui est spécifique (développements complémentaires et design propre au site).
  • Le service web assure la conception graphique et l'intégration / développement de toutes les interfaces.
  • Les principales fonctionnalités en place dans notre contexte sont :
    • Librairies jQuery (systèmes d'onglets, slideshows, tooltips, menus déroulants, popup (images+iframes), etc, ...)
    • Newsletters
    • Pages profils
    • Multilangues
    • Thésaurus (extension eZ tags)
    • Module de structuration dynamique des pages (extension eZ Flow)
Limitations, difficultés, fonctionnalités importantes non couvertes

La principale difficulté réside dans la compréhension du mécanisme d'affichage et de surcharge (override).

Le language de template est à assimiler, particulièrement la fonction 'fetch' très utilisée dans la déclinaison de l'arborescence du site.

Les notions d'objet, de classe, de noeud, de vue, de cache sont également importantes. Il faut connaître les principes de la programmation Objet.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

eZPublish n'est intégré dans aucune distribution, cependant l'installation est simple et se fait à partir de l'archive sur http://share.ez.no/downloads, après création d'une base de données dédiée (en UTF-8).

Plates-formes

Toutes les plate-formes LAMP (Linux, Apache, MySQL et PHP) et variantes (WAMP, XAMP). Cependant, eZ Publish peut être également installé sur des serveurs Microsoft, Sun Solaris ou Mac OS X.

Logiciels connexes
Autres logiciels aux fonctionnalités équivalentes
Environnement de développement
Type de structure associée au développement

La société eZ system en collaboration avec la communauté de développeurs participent à l'évolution du CMS, comme indiqué ici.

Eléments de pérennité
  • eZ Publish est un CMS professionnel de renommée internationale utilisé par de grandes entreprises du secteur privé et public, et la communauté est active.

  • A noter que de nombreux contributeurs d'eZ Publish participent au développement de Symfony.

Références d'utilisateurs institutionnels

Les utilisateurs institutionnels connus à ce jour :

Quelques exemples de "mini-sites" projets / ANR / services d'observation / enseignement :

Environnement utilisateur
Documentation utilisateur

Documentation officielle

http://doc.ez.no/

Présentation sur transparent

eZ et le système d'information

Bonnes et mauvaises pratiques d'eZ

Divers (astuces, actualités, sécurité)
  • Il est conseillé de placer le minimum de configuration dans la partie settings/siteaccess/, à savoir uniquement site.ini.append.php pour placer l'ensemble au niveau de l'extension extension/settings.
  • L'utilisation des extensions personnalisées facilite les mises à jours du logiciel et la flexibilité du CMS.
  • Les extensions déclarées dans les fichiers site.ini, sont appelées dans l'ordre inverse. Les templates associés sont donc surchargés dans cet ordre.
  • eZ Publish est disponible avec toute une gamme d'extensions permettant de répondre à la majorité des problématiques de gestion de contenu. Son ouverture à d'autres programmations spécifiques en font un outil très complet et très satisfaisant pour un ingénieur en développement. Pour exemple : 1 stagiaire (1ère année École Ingénieur Informatique) ayant des bases en PHP, a été capable de créer ses templates après 1 jour de présentation et 3 jours d'apprentissage.
Contributions

Commentaires

CMSms

Dans la liste des logiciels similaires devrait apparaître CMSms ("CMS made simple").

Christine Carvalho de Matos

Christine Carvalho de Matos (LIRMM, Montpellier) et Pierre Vert (Observatoire Midi-Pyrénées, Toulouse) essaient de créer une communauté d'utilisateurs ESR autour d'ezpublish, afin de s'entraider entre utilisateurs.
Une liste de diffusion a été créée: dev-ezpublish [at] lirmm [dot] fr