Tout est objet … et on ne s’en plaint pas!
Ce nouveau post est une suite logique à mon premier article décrivant, après quelques semaines d’utilisation, mes impressions sous eZ Publish. Il peut être intéressant de le lire, surtout si vous ne connaissez pas encore l’outil ou que vous êtes entrain de le découvrir. Ici, je vais aborder certains points techniques pouvant vous aider à appréhender l’organisation même du framework.
Sous eZ Publish l’arborescence de vos projets s’organisera toujours autour de nœuds. Tout comme sur votre OS favori, un nœud pourra prendre la forme d’un répertoire ou d’un fichier qui sera alors appelé un objet. Un objet ne peut exister sans nœud, et c’est pourquoi un nœud fera toujours référence à un objet grâce à son id. Ces notions sont très importantes à assimiler car lors de vos futurs développements vous vous apercevrez très vite que toutes vos vues s’organiseront toujours autour de ces nœuds. Et mes classes de contenu alors ? Par abus de langage, un objet est une classe, à la différence qu’un objet existe sous un nœud (il a été créé), et qu’une classe n’est rien d’autre qu’un modèle de données.
Pour schématiser ces notions:
- Accueil
- Rubrique 1
- Rubrique 2
- Page
Accueil est un nœud d’id 2, on l’appelle le RootNode car c’est le nœud le plus haut dans votre arborescence, il est normalement impossible de le supprimer et il existe par défaut. Ce nœud fait référence à un objet de type homepage, et si vous avez suivi jusqu’à présent, homepage est une classe de contenu. Un nœud ou plus précisément une classe de contenu pourra adopter le comportement de conteneur, c’est le cas de notre RootNode capable de contenir des enfants (Rubrique 1, Rubrique 2 etc…). Ce comportement sera à signaler lors de la création/modification de vos classes de contenu en cochant simplement la case conteneur. De ce fait, même un objet de type page pourra avoir des enfants!
- Un noeud est représenté par son node_id et fait référence à un objet grâce à son object_id ;
- Un objet est représenté par son object_id et fait référence à une classe par son class_id ;
- Une classe de contenu est représentée par son class_id, c’est un modèle de données constitué d’un ou plusieurs attributs typés (ligne de texte, bloc de texte, champ mail, bloc XML etc…), on les appelle datatypes.
Si vous voulez aller plus loin, sachez que même les datatypes ont un id, donc lorsque vous allez créer les différents attributs qui composeront vos futurs classes de contenu, ils se verront attribuer un identifiant unique. Pour le moment je ne suis pas suffisamment expérimenté dans ce domaine pour vous apporter plus de précisions, mais sachez qu’il est tout a fait possible de créer vos propres datatypes (en PHP). Ce qui montre bien une fois encore que vous pourrez réellement faire ce que vous voulez avec eZ Publish.
Pour les rubriques et les pages, le raisonnement reste identique en tout point, une classe de contenu pourra être utilisée dans un ou plusieurs nœuds. Il n’y a en théorie aucune limite, vous avez la possibilité d’en créer autant que nécessaire, sans même vous soucier de l’impact que cela pourrait avoir sur votre site et sa gestion … si ce n’est son ergonomie, mais là c’est une autre histoire!


