Glasnost

Détails des directives de TAL

attributes

attributes sert à modifier (ou ajouter) un ou plusieurs attributs à la balise où il se trouve. On remplace plusieurs attributs non pas en multipliant les déclarations attributes [1] mais bien en séparant les différents attributs par des points-virgules.

Exemple:

<a href="/" tal:attributes="href '/une-autre-page'">Ailleurs</a>

deviendra:

<a href="/une-autre-page">Ailleurs</a>

Et:

<textarea tal:attributes="col '20';rows '15'">
blah
</textarea>

deviendra:

<textarea col="20" rows="15">
blah
</textarea>

condition

condition permet d'inclure l'élément auquel il se rapporte uniquement quand la condition est vérifiée.

Exemple:

<p tal:condition="not userToken">
  Vous n'êtes pas identifié.
</p>

Ne provoquera l'affichage du paragraphe et de son contenu que quand la variable userToken ne sera pas définie.

content

content permet de remplacer le contenu d'un élément par le résultat de l'expression.

Exemple:

<h1 tal:content="currentObject.label">Titre</h1>

Pourra devenir (suivant la valeur de currentObject.label:

<h1>Liste des nouveautés</h1>

define

define permet de définir des variables.

Exemple:

<div tal:define="titre currentObject.label">
  <h1 tal:content="titre">Titre</h1>
</div>

omit-tag

omit-tag permet de supprimer la balise avec laquelle il est associé une fois les autres directives suivies.

Exemple:

<div tal:omit-tag="" comment="cette balise n'apparaîtra nulle part">
  <h1>Bonjour</h1>
</div>

provoquera simplement:

  <h1>Bonjour</h1>

on-error

on-error permet d'intercepter des erreurs qui se produiraient dans d'autres directives.

Exemple:

<div tal:on-error="'Une erreur est survenue.'">
  <p>
     Un peu de texte.
  </p>
  <p tal:content="42/0">sd</p>
</div>

La division 42/0 va provoquer une erreur et le texte Une erreur est survenue sera donc affiché.

repeat

repeat permet de répéter un certain nombre de fois un élément. Il définit une variable qui contiendra au fur et à mesure des itérations toutes les valeurs de la liste donnée en expression.

Exemple:

<ul>
  <li tal:repeat="author currentObject.authorsSet">
     <span tal:replace="author.name">Pol</span> est un des auteurs.
  </li>
</ul>

Variable repeat supplémentaire

Dans une boucle repeat, une variable supplémentaire existe et a pour nom repeat- suivi du nom de la variable d'itération (dans l'exemple précédent, author donc repeat_author).

Cette variable contient les attributs:

Cette variable comporte également deux méthodes, first et last qui peuvent être utilisées dans le cas d'éléments triés pour repérer le début ou la fin d'un groupe.

Exemple:

<ul>
  <li tal:repeat="author currentObject.authorsSet">
     <span tal:replace="repeat_author.roman">i</span>.
     <span tal:replace="author.name">Pol</span>
  </li>
</ul>

provoquera

<ul>
  <li>i. Emmanuel</li>
  <li>ii. Frederic</li>
  <li>iii. Odile</li>
  <li>iv. Benjamin</li>
</ul>

replace

replace permet de remplacer une balise et son contenu par le résultat de l'expression.

Exemple:

<p>
  Vous êtes sur l'article <span tal:replace="currentObject.label">test</span>.
</p>

[1] il ne peut jamais y en avoir qu'une attribut du même nom