Quelques sujets sur twig que je pousse à nouveau...

---------- Message transféré ----------
De : Dsls <[email protected]>
Date : 2 février 2011 16:13
Objet : Twig coté thèmes, premières idées...
À : Dotclear Bazar <[email protected]>


Hello,

Un petit mail pour résumer ce que pourrait être un thème, version twig.

* Les bases
Les templates actuels sont basés sur 2 concepts : les blocs
<tpl:Block>...</tpl:Block> et les valeurs {{tpl:Value}}.
Ces concepts ont fait leurs preuves, cependant, dès qu'on veut sortir
un peu des sentiers battus, on passe souvent par la case plugin dès
lors qu'un tag n'affiche pas exactement ce qu'on souhaite. La cause
principale : les balises affichent quelque chose, et ne __retournent__
pas quelque chose qu'on pourrait exploiter/triturer.
L'idée de Twig est de remettre les choses à plat, de manière un peu
plus klingonne (mais pas trop quand même).

Twig définit des nouvelles balises :
* Les instructions simples {% instruction ... suites %}
* Les instructions de type bloc (ex : {% for p in posts %} ... {% endfor %})
* Les affichages de valeurs (équivalent aux values précédentes) : {{valeur}}

S'ajoutent à cela : des mots-clés évolués (boucles for, tests,
définition de variables), des filtres et des objets.

La présentation sur le site est assez complète et montre bien les
possibilités : http://www.twig-project.org/doc/templates.html

* Les impacts
Impact majeur : plus besoin de balises, il suffit d'"exposer" un objet.

Exemple :
Ancien template :
<tpl:Entries selected="1">
        Titre : {{tpl:EntryTitle}}
</tpl:Entries>

Avec Twig :
{% set posts = blog.getPosts({'selected': '1'}) %}
{% for p in posts %}
        Titre : {{p.post_title}}
{% endfor %}

Autre impact : il va falloir définir des classes blog "publiques", ou
un genre de "proxy" vers les classes actuelles pour limiter les appels
depuis les templates vers les classes du core.

Pour les filtres, on ne sera plus limité à encode_html ou cut_string
Filtrer un contenu aux 300 premiers caractères en enlevant les tags
html devient alors {{p.post_title|striptags|truncate(300)}}

Dernier point de ce mail : les blocs : on peut définir des blocs
fonctionnels, comme mentionné dans mes mails sur la refonte des
thèmes, et c'est supporté en natif. Idem pour l'héritage de templates

--
Bruno
_______________________________________________
Dev mailing list
[email protected]
http://ml.dotclear.org/listinfo/dev

Répondre à