29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don




Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

The template override system -- Système de surcharge de template

Table des matières

  1. The template override system -- Système de surcharge de template
  2. Template override example -- Exemple de template de surcharge

Template override example -- Exemple de template de surcharge

Date de publication: le mardi 29 mars 2011 à 22h47
Dernière modification: par Pascal BOYER le jeudi 31 mars 2011 à 18h47

28/09/2010 02:07

versions 3.9, 3.10, 4.x

Quand les autorités temporelles ou spirituelles décident que la vie d'une certaine catégorie d'hommes manque en soi de valeur, les autres hommes les tuent avec franchise et impunité...

Octavio Paz

The following example demonstrates how the template override system can be used to display alternate templates in different situations.
L'exemple qui suit montre comment utiliser le système de surcharge pour afficher des templates alternatifs (de surcharge) dans différentes situations.

Let's say that we have a simple content tree made up of two folders: "News" and "Products". The "News" folder contains news articles and the "Products" folder contains products. The following illustration shows an example of such a tree.
Supposons que nous ayons un simple arbre de contenu constitué des deux répertoires News et Products. Le répertoire News contient des articles de news et le répertoire Products des produits. L'image suivante illustre l'organisation d'une telle arborescence:

Example content node tree
Exemple de l'arbre de nœuds contenu.

Without any overrides, eZ Publish will most likely display all the nodes using the same template. This would probably be the default full view template located in the standard design. However, what if we wish to display custom/alternate templates for the different nodes? We would perhaps like the system to behave in the following way:
En l'absence de toute surcharge, eZ Publish affichera tous les nœuds en utilisant le même template, probablement le template par défaut de la vue full, situé dans le design standard. Cependant, que faire si nous souhaitons afficher des templates alternatifs/personnalisés pour les différents nœuds ? Nous aimerions peut-être que le système se comporte de la manière suivante:

  • Display a special "welcome" template when the "My site" node is accessed
    Afficher un template "bienvenue" lorsque le nœud "Mon site" est affiché/demandé.
  • Display a custom folder template when a folder is accessed
    Afficher un template personnalisé lorsqu'un répertoire est affiché/demandé.
  • Display a custom article template when a news article is accessed
    Afficher un template personnalisé lorsqu'un article est affiché/demandé.
  • Display a custom product template when a product is accessed
    Afficher un template personnalisé lorsque l'on demande d'afficher un produit.

The requests in the list above can be easily achieved by creating a couple of overrides. The welcome page should be solved using an override that is triggered by the identification number of the "My site" node. The rest of the requests can be solved using the class identifier key, which allows an override to be triggered when an object of a certain class is accessed. The following example shows the contents of an "override.ini.append.php" file that makes this possible:
Les requêtes de la liste ci-dessus peuvent être facilement satisfaites en créant quelques surcharges. La page de bienvenue sera affichée par une surcharge déclenchée par le numéro d'identifiant du nœud My site. Quant aux autres requêtes, elles seront résolues en utilisant la clef class identifier qui déclenche une surcharge lorsqu'une requête cible un objet d'une certaine classe. L'exemple suivant montre le contenu d'un fichier override.ini.append.php pouvant résoudre les requêtes de la liste ci-dessus:

# Override for welcome page
 [welcome_page]
 Source=node/view/full.tpl
 MatchFile=my_welcome.tpl
 Subdir=templates
 Match[node]=2
 
 # Override for folders
 [my_folder]
 Source=node/view/full.tpl
 MatchFile=my_folder.tpl
 Subdir=templates
 Match[class_identifier]=folder
 
 # Override for articles
 [news_articles]
 Source=node/view/full.tpl
 MatchFile=my_article.tpl
 Subdir=templates
 Match[class_identifier]=article
 
 # Override for products
 [products]
 Source=node/view/full.tpl
 MatchFile=my_product.tpl
 Subdir=templates
 Match[class_identifier]=product

The alternate templates must be placed in the "override/templates" subdirectory of the main design used by the siteaccess. The following illustration shows where the templates would be located in a design called "example".
Les templates de surcharge doivent être placés dans le sous-répertoire override/templates/ du design principal lié au siteaccess utilisé. L'illustration suivante montre où les templates doivent être placés dans le cas d'un design nommé example:

Pagelayout + override templates in example design
Template pagelayout.tpl + templates de surcharge dans le design example

When the system is in use, the different overrides would be activated based on the given conditions. The following illustration shows where/when the different alternate templates would be used.
Lorsque le système est en fonctionnement, les différentes surcharges sont activées (utilisées) en fonction des conditions posées. L'illustration suivante montre où/quand les différents templates de surcharge seront utilisés.

Template override example
Exemple de surcharge de template

Every time a node referencing a folder object is viewed, the system will use the "my_folder.tpl" template. When an article is viewed, the "my_article.tpl" template will be used. When a product is viewed, the "my_product.tpl" template will be used. When node number 2 (the "My site" node) is viewed, the "my_welcome.tpl" will be used.
Dans l'exemple présenté par la figure ci-dessus, chaque fois qu'un nœud référençant un objet folder est affiché, le système utilise le template my_folder.tpl. Lorsqu'un article est affiché, c'est le template my_article.tpl qui est utilisé. Pour l'affichage des produits, c'est le template my_product.tpl qui est utilisé. Enfin, pour le nœud 2 (le nœud My site), c'est le template my_welcome.tpl qui est sollicité.

Commentaires