eZ Publish
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.
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).
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.
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)
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.
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