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 language -- Langage des templates

Table des matières

  1. The template language -- Langage des templates
  2. Comments -- Commentaires
  3. Variable types -- Types de variables
  4. Variable usage -- Utilisation des variables
  5. Array and object inspection -- Inspection des tableaux et objets
  6. Control structures -- Structures de contrôle
  7. Functions and operators -- Fonctions et opérateurs

Variable types -- Types de variables

Date de publication: le mardi 29 mars 2011 à 20h39
Dernière modification: par Pascal BOYER le lundi 20 février 2012 à 18h55

28/09/2010 1:17

versions 3.9, 3.10, 4.x

The eZ Publish template language supports the following variable types:
Le langage de template eZ Publish supporte les types de variables suivants:

  • Numbers
    Nombres
  • Strings
    Chaines de caractères
  • Booleans
    Booléens
  • Arrays
    Tableaux
  • Objects
    Objets

While some variable types can be created on the fly, others need to be created using an operator. Types that may be created directly are numbers and strings. Booleans and arrays must be created using operators, objects may be created using miscellaneous functions and operators. In addition to the types listed above, it is also possible to create and use custom variables. Custom variable types must be represented as objects.
Alors que certains types de variables peuvent être créés à la volée, d'autres doivent l'être en utilisant un opérateur. Les types pouvant être créés à la volée sont les nombres et les chaînes de caractères. En revanche, les booléens et les tableaux seront créés par le biais d'un opérateur.  Des objets peuvent être également créés en utilisant différentes fonctions ou différents opérateurs. En plus des types de variables listés ci-dessus, il est possible de créer et d'utiliser des variables personnalisées représentées comme des objets.

Numbers / Les nombres

Numbers are numerical values. A number can be a positive or a negative integer or a floating point value. The following example demonstrates how different numbers can be used directly within template code:
Les nombres sont des valeurs numériques. Un nombre est un entier positif ou négatif ou un nombre à virgule. Les exemples ci-dessous illustrent la méthode d'insertion de nombres directement dans le code des templates:

{13}
{1986}
{3.1415}
{102.5}
{-1024}
{-273.16}

Strings / Les chaînes de caractères

A string is an arbitrary sequence of characters (text) that is encapsulated by a matching pair of either single or double quotes, ' or ". If the quotes are omitted, the string will most likely be interpreted as a function name. Strings are usually defined in the following way:
Une chaîne de caractères est une séquence arbitraire de caractères (de texte) placée entre simple ou double apostrophes ( ' ou " ). Si les apostrophes sont omises, la chaîne de caractères sera très vraisemblablement interprétée comme un nom de fonction. Les chaînes de caractères sont couramment définies ainsi:

{'This is a string.'}
{"This is another string."}

The output of the example above would be:
La sortie produite par l'exemple ci-dessus sera:

This is a string.
This is another a string.

Using quotes / Utilisation des apostrophes

It is possible to use quotes inside strings. This can be done by either using a different kind of quote or by making use of the escape character (backslash). The following examples demonstrate the use of quotes inside strings:
Il est possible d'utiliser les apostrophes à l'intérieur des chaînes de caractères en utilisant soit des apostrophes différentes soit en utilisant le caractère d'échappement (l'antislash: \ ). Voici quelques exemples d'utilisation des apostrophes à l'intérieur des chaînes de caractères:

{'The following text is double quoted: "Rock and roll!" '}
{"The following text is single quoted: 'Rock and roll!' "}
{'Using both single and double quotes: "Rock\'n roll!" '}
{'Using both single and double quotes: \'Rock\'n roll!\' '}
{"Using both single and double quotes: 'Rock'n roll!' "}
{"Using both single and double quotes: \"Rock'n roll\" "}

The output of the example above will be:
La sortie produite par l'exemple ci-dessus sera:

The following text is double quoted: "Rock and roll!"
The following text is single quoted: 'Rock and roll!'
Using both single and double quotes: "Rock'n roll!"
Using both single and double quotes: 'Rock'n roll!'
Using both single and double quotes: 'Rock'n roll!'
Using both single and double quotes: "Rock'n roll!"

Because of the way template code is defined (encapsulated in a matching pair of curly brackets), the right curly bracket, "}", must also be prepended by the backslash escape character. The following example demonstrates this.
En raison de la façon dont est défini le code de template (placé entre accolades), l'accolade droite "}" doit également être échappée/protégée par l'antislash ( \ ), comme ceci:

{'{ This text is inside curly brackets.\}'}

The output of the template code above will be:
La sortie produite par le code de template ci-dessus sera:

{This text is inside curly brackets.}

Template strings do not support inline expansion of variables (as in Perl and PHP). In other words, it is not possible to mix variables into strings. However, the concat operator can be used to append the contents of some variable to a string; which means that this operator can be used to build strings consisting of other strings and/or miscellaneous variables.
Les chaînes de caractères placées dans les templates ne supportent pas l'expansion en ligne (voir le commentaire de Side SAG du 18-02-2012) des variables (comme en PERL ou en PHP). En clair, il n'est pas possible d'inclure une variable dans une chaîne de caractères. Cependant, l'opérateur concat permet d'ajouter le contenu de certaines variables à une chaîne de caractères, ce qui signifie que cet opérateur peut être utilisé pour construire une chaîne de caractères composée d'autres chaînes de caractères et/ou de diverses variables.

Booleans / Booléens

Booleans are binary, they are either TRUE (1) or FALSE (0). A boolean must be created using either the true or the false template operator. Example:
Les booléens sont des binaires VRAIS (1) ou FAUX (0) créés par le biais des opérateurs de template true ou false . Exemple:

{true()}
{false()}

For some operators and functions, it is possible to use integers as booleans. However, these are not "real" booleans. Zero means FALSE; all non-zero values mean TRUE. Some operators are able to treat an array as if it were a boolean value. While an empty array means FALSE, a non-empty array means TRUE.
Pour certains opérateurs ou certaines fonctions, il est possible d'utiliser des entiers comme s'ils étaient des booléens. Cependant, il ne s'agit pas de vrais booléens. Zéro vaut FAUX: toute valeur non nulle vaudra VRAI. Quelques opérateurs sont capables de traiter un tableau comme s'il était une valeur booléen. Alors qu'un tableau vide vaudra FAUX, tout tableau non vide vaudra VRAI.

Arrays / Tableaux

Arrays are containers that are capable of holding a collection of any other variable type including other arrays. An array can be a simple vector or a hash map (associative array). An element of a vector can be accessed using an index number. The number denotes the position of the element inside the array (the first element is zero, the second element is one, and so on). An element of an associative array can be accessed using an identifier. Regular arrays can be created with the "array" operator. Associative arrays can be created with the hash operator. The following examples demonstrate the creation of arrays and hashes.
Les tableaux sont des conteneurs capables de gérer un ensemble de n'importe quel autre type de variables, tableau compris. Un tableau peut être un simple vecteur ou un "hash map" (tableau associatif). On accède à un élément d'un vecteur en utilisant un numéro d'index, ce numéro indiquant la position de l'élément dans le tableau (le premier élément est zéro, le second est 1 etc...). On accède à un élément d'un tableau associatif au moyen d'un identifiant. Alors que les tableaux ordinaires sont créés par l'opérateur array , les tableaux associatifs sont créés avec l'opérateur hash . Les exemples suivants illustrent la création de tableaux et de tableaux associatifs (hash):

Exemple 1: Array of numbers / Tableau de nombres

{array( 2, 4, 8, 16 )}

This example creates an array containing four numbers. The array will consist of the following elements:
Cet exemple crée un tableau contenant 4 nombres et composé des éléments suivants:

Index Value of element
Valeur de l'élément
  2
1 4
2 8
3 16

Exemple 2: Array of strings / Tableau de chaînes de caractères

{array( 'This', 'is', 'a', 'test' )}

This example creates an array containing four strings. The array will consist of the following elements:
Cet exemple crée un tableau contenant 4 chaînes de caractères et composé des éléments suivants:

Index Value
Valeur
  'This'
1 'is'
2 'a'
3 'test'

Exemple 3: Associative array / Tableau associatifs

{hash( 'Red', 16, 'Green', 24, 'Blue', 32 )}

This example creates an associative array containing three key-value pairs. The array will consist of the following elements:
Cet exemple crée un tableau associatif contenant 3 paires clef/valeur. Le tableau sera composé des éléments suivants:

Index Key
Clef
Value
Valeur
  Red 16
1 Green 24
2 Blue 32

Objects / Objets

Template objects are created by PHP code or by special template operators. The system uses objects to represent data structures of different kinds and sizes. For example, objects are used to represent information about content nodes, translations, webshop orders, user accounts, roles, policies and so on. Refer to the Objects section of the "Reference" chapter for a complete overview of the objects and their contents.
Les objets de template sont créés par du code PHP ou par des opérateurs de template spéciaux. Le système utilise des objets pour représenter des structures de données de différentes sortes et de différentes tailles. Des objets sont utilisés, par exemple, pour représenter les informations sur des nœuds de contenu, des traductions, des ordres d'achat, des comptes utilisateurs, des rôles, des droits, etc... Référez-vous à la section Objets du chapitre Référence pour un aperçu complet des objets disponibles et de leur attributs.

Object attributes / Attributs des objets

Objects consist of named attributes where each attribute can be a different type. The attributes may represent any type of data (numbers, strings, arrays, etc.) and even other objects. Since the attributes are named (each one has an identifier associated to it), their contents can be easily accessed using the different identifiers. This is done in the same way as when accessing the values of associative arrays using identifiers.
Les objets sont composés d'attributs nommés et chacun d'eux peut être de type différent. Les attributs peuvent représenter n'importe quel type de données (nombre, chaînes de caractères, tableaux, etc...) et même d'autres objets. Puisque les attributs portent un nom (chaque nom est associé à un identifiant), il est facile d'accéder à leur contenu en utilisant les différents identifiants. La méthode pour réaliser cela est la même que celle utilisant les identifiants pour accéder aux valeurs des tableaux associatifs.

The following illustration shows the structure (with example values) of an object (ezdate) that contains information about a date.
La figure suivante présente la structure (avec des exemples de valeurs) d'un objet ( ezdate ) contenant des informations sur la date:

The structure of the "ezdate" object
Structure de l'objet ezdate

The illustration above reveals that the "ezdate" object consists of five attributes ("timestamp", "is_valid", "year", "month" and "day"). All attributes are represented as strings except the "is_valid" attribute, which is a boolean. The values are the actual data that the object contains.
L'illustration ci-dessus révèle que l'objet ezdate est composé de 5 attributs ( timestamp, is_valid, year, month et day) représentés comme des chaînes de caractères à l'exception de l'attribut is_valid qui est un booléen . Les valeurs représentent les données que contient l'objet.

Attribute availability / Disponibilité des attributs

It is worth noting that while some attributes are pre-fetched/calculated when an object itself is fetched, others are not. This means that accessing the contents of attributes may require additional processing (usually in the form of database queries). The "static" column in the reference documentation for objects indicates whether the different attributes provide pre-fetched values or if they need to be computed upon request. This information should be helpful when it comes to optimizing your templates.
Il est important de noter que si certains attributs sont pré-cherchés/calculés lorsque l'objet est lui-même recherché, d'autres ne le sont pas. Cela signifie qu'accéder au contenu des attributs peut nécessiter un traitement supplémentaire (habituellement sous la forme de requêtes adressées la base de données). La colonne static* des tableaux de documentation des objets indique si les différents attributs fournissent des valeurs pré-cherchées ou si elles doivent être, au contraire, calculées à chaque requête. Cette information est très utile pour l'optimisation de vos templates.



Table des matières

  1. The template language -- Langage des templates
  2. Comments -- Commentaires
  3. Variable types -- Types de variables
  4. Variable usage -- Utilisation des variables
  5. Array and object inspection -- Inspection des tableaux et objets
  6. Control structures -- Structures de contrôle
  7. Functions and operators -- Fonctions et opérateurs

Commentaires

  • @Side SAG

    Merci encore Side SAG ;-)

    J'ai remplacé les «???» par une référence à ton message.

    Cordialement

    Suggestion

    Extrait de l'article : "Les chaînes de caractères placées dans les templates ne supportent pas l'expansion en ligne (???) des variables (comme en PERL ou en PHP)."

    Dans un livre (Perl), j'ai trouvé ce qui suit :
    "une chaîne de caractère avec interpolation ou sans interpolation", comme c'est le cas dans l'exemple suivant :

    my $chaine = 'eZ';

    say '$chaine Publish'; # sans interpolation, le résultat s'affiche ainsi : $chaine Publish

    say "$chaine Publish"; # avec interpolation, le résultat s'affiche ainsi : eZ Publish