Aller au contenu

Archive de avril, 2011

20
avr

Fonctionnement d’une surcharge

Je vais aborder dans ce tout nouvel article le mode de fonctionnement des surcharges de template adopté par eZ Publish. Nous verrons qu’il existe trois principaux cas de figure:

  • la surcharge des templates par défauts (ou standards) ;
  • la création d’un template pour la vue d’une nouvelle classe de contenu ;
  • la surcharge de vos propres templates.

Pour ces trois points, le développement d’un template (avec les template operators) est identique, mais dans bien des cas, nous verrons qu’il faudra impérativement modifier un fichier de configuration dédié à ce type d’entreprise.

Point sur l’arborescence

Il est important de bien comprendre l’arborescence du répertoire design, car c’est dans ce dernier que vous passerez la majorité de votre temps de développement!

Arborescence d'un projet eZ PublishL’arborescence qui vous est présentée ci-dessus sera très certainement différente de la vôtre, tout simplement parce que chaque projet est différent, et qu’il n’est jamais nécessaire de surcharger tous les templates par défauts. Dans cet exemple, les répertoires nommés « standard » et « website » sont tous deux des enfants directs du répertoire « design/ ». Ainsi, tous vos templates devront être créés, soit dans le répertoire « webiste/templates/ », soit dans « website/override/templates/ ».

Quelle est la différence alors ? C’est justement ce que nous allons voir.

La surcharge des templates standards

eZ Publish vous propose un grand nombre de templates par défauts dits « standards ». Ils sont tous stockés dans le même répertoire et facilement identifiables par le nom qu’ils portent. Prenons pour exemple le fichier « standard/template/pagelayout.tpl » (pas visible dans l’arborescence du dessus), il s’agit du template général de mise en page qui contiendra dans 90% des cas la structure même de votre site, le DOCTYPE, les balises head, body ect… vous pouvez le comparer à un fichier d’index, c’est en quelque sorte le point d’entrée de votre site internet.

Comme vous pouvez le voir sur l’image ci-dessus, un fichier de même nom se trouve aussi dans le répertoire « website/templates/ », il s’agit là de notre propre template, et c’est ainsi qu’eZ Publish va le prendre en compte pour laisser de coté celui par défaut. On parle alors de surcharge ou d’écrasement car il va tout simplement être utilisé prioritairement à celui proposé par la plateforme. Notez qu’il est fortement déconseillé de modifier un template standard, procédez ainsi lorsque vous aurez besoin d’utiliser un template existant qui ne répond pas complètement à vos attentes.

Création d’un nouveau template

La création d’un nouveau template intervient lorsqu’il est nécessaire d’afficher la vue d’une classe de contenu. Nous allons prendre pour exemple le développement simple d’un template de page type contenant les attributs suivants:

  • Nom (name) de type chaine de caractères ;
  • Nom court (short name) de type chaine de caractères facultative ;
  • Description court (short_description) de type bloc de texte facultatif;
  • Corps (body) de type bloc de texte riche.

Après avoir créé la classe de contenu depuis le backend de votre site internet [Administration > Classes > Content > Nouvelle classe] (cf le schéma ci-dessous), il devient nécessaire d’en faire un template et d’indiquer au système quel fichier utiliser pour afficher sa vue lorsque nécessaire.

Voici le template de la vue « full » (pleine page) de notre page type:

<h1>{$node.data_map['name'].content|wash()}</h1>
{attribute_view_gui attribute = $node.data_map['body']}

Comme vous pouvez le constater ici, rien de bien compliqué, notre h1 va contenir le titre de la page, et le corps quand a lui sera affiché à l’aide de « attribute_view_gui ». Pour le moment, vous pouvez le voir comme un raccourci syntaxique, on aurait très bien pu écrire {$node.data_map['body'].content|wash()}, mais attribute_view_gui va faire appel à un template tout comme celui-ci, qui pourrait être beaucoup plus complexe et terme de traitement. Ça sera notamment le cas lorsqu’il faudra afficher les champs d’un formulaire de contact (article à venir). Ce fichier (template) sera à mettre dans le répertoire « website/override/templates/full/ » et devra, pour notre exemple, porter le nom « page.tpl ».

La dernière étape consiste à modifier le fichier de configuration « /settings/website/overrides.ini.append.php » afin d’indiquer au système quel fichier utiliser pour l’affichage de notre vue. Pour cela, il suffit d’ajouter les lignes suivantes:

[page]
# Source de la surcharge, toutes les vues pleines (full) font appel à ce template.
source=node/view/full.tpl
# Fichier qui sera utilisé en surcharge.
MatchFile=full/page.tpl
# Répertoire racine.
Subdir=templates
# Condition à respecter pour utiliser ce template, page correspond au
# nom donné à la classe de contenu lors de sa création.
Match[class_identifier]=page

Pour terminer, en backend, il ne vous reste plus qu’à créer votre page sous le noeud « Accueil » et de vider votre cache pour que les modifications apportées à votre fichier de configuration soient bien prises en compte!

Surcharge de vos propres templates

Le dernier point qui me semble important de souligner reste celui de la surcharge de vos propres templates. Prenons pour exemple un site avec une colonne latérale composée de plusieurs blocs (le coté a peu d’importance). Admettons que vous souhaitez afficher dans cette dernière 2 blocs en accueil puis 3 sur le reste du site, pour cela, la surcharge de template répondra parfaitement à nos besoins. En effet, un site contient toujours qu’une seule page d’accueil, alors pourquoi ne pas s’en servir comme référence pour notre surcharge ?

Tout d’abord, vous aurez besoin de créer votre template de colonne à 3 blocs dans le répertoire « website/templates/ » portant le nom « colonne.tpl » par exemple. Ce fichier devra être inclus depuis un autre template à l’endroit où vous souhaitez que votre colonne apparaisse dans votre code HTML:

{include uri="design:colonne.tpl"}

A cet instant précis, le site contiendra toujours une colonne à 3 blocs, même en page d’accueil, c’est alors qu’entre en jeu la surcharge. On commence par créer un fichier de même nom (plus simple pour l’exemple, mais vous pouvez très bien le nommer comme bon vous semble) qu’on placera dans le répertoire « website/override/templates/ ». Enfin, il ne nous reste plus qu’à indiquer au système dans quel cas utiliser notre template de colonne à 2 blocs! Pour cela, il suffit simplement d’ajouter la section suivante dans votre fichier de configuration (/settings/website/overrides.ini.append.php):

[page]
 # Chemin vers le fichier source à surcharger (indiquer le chemin
 # complet si nécessaire /MON/REPERTOIRE/TEMPLATE.TPL).
 source=colonne.tpl
 # Chemin du fichier utilisé pour la surcharge (indiquer le chemin
 # complet si nécessaire /MON/REPERTOIRE/TEMPLATE.TPL).
 MatchFile=colonne.tpl
 # Nom du répertoire contenant la surcharge.
 Subdir=templates
 # Condition à respecter pour prendre en compte notre surcharge,
 # ici on attend que l'identifiant du nœud soit 2 (homepage).
 Match[node_id]=2

Après avoir vidé le cache, un petit rafraichissement de notre page d’accueil s’impose pour voir que désormais notre colonne contient 2 blocs, et 3 sur le reste du site.