Dotclear

Vous n'êtes pas identifié(e).

Annonce

#1 2010-11-19 08:30:54

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Réflexions sur le moteur de template vs Twig

Hello,

Beaucoup de chantiers sont en cours actuellement, et j'en ai initié un nouveau autour du moteur de templates actuel de dotclear.

Plusieurs constats :
* C'est un moteur de templates "maison" avec des limitations connues. Beaucoup de moteurs de templates sont aujourd'hui présents sur le marché, et sont plus évolués
* Le moteur est limité à la partie publique. Avec le nombre grandissant de plugins actuels, il peut être intéressant d'avoir un moteur de templates aussi pour les pages d'admins, afin de faciliter le travail des contributeurs de plugins

Après avoir fait le tour des moteurs de templates existants, il semblerait que celui qui a le vent en poupe en ce moment est Twig :  http://www.twig-project.org

L'idée serait de voir si l'utilisation d'un tel moteur en remplacement du moteur actuel serait possible, et bénéfique. Il ne s'agit bien sûr pas de tout casser au niveau actuel, mais de conserver une compatibilité avec la syntaxe actuelle, tout en permettant de jouer avec des mécanismes plus avancés.

Je me suis livré à un petit test d'intégration de Twig au niveau de la partie publique, le plugin est disponible ici :
http://www.morefnu.org/public/archives/ … ig-1.1.zip

Pour le voir à l'oeuvre (ou plutôt pour ne pas le voir à l'oeuvre, vu que c'est censé être transparent), il faut le déclarer comme nouvel urlhandler : dans le fichier inc/prepend.php, remplacer :

$__autoload['dcUrlHandlers']			= dirname(__FILE__).'/public/lib.urlhandlers.php';

Par :

$__autoload['dcUrlHandlers']			= dirname(__FILE__).'/../plugins/twig/lib.twigurlhandlers.php';

Autre détail: dans inc/clearbricks/template/class.template.php, remplacer :

	protected $blocks = array();
	protected $values = array();

Par

	public $blocks = array();
	public $values = array();

Dyslexics have more fnu!

Hors ligne

#2 2010-11-19 11:56:21

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Réflexions sur le moteur de template vs Twig

Il serait intéressant de décrire brièvement (et en français ;) quelques "plus" par rapport à l'actuel permettant d'apprécier ce nouveau moteur de templates.

Hors ligne

#3 2010-11-19 12:53:13

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : Réflexions sur le moteur de template vs Twig

En l'état, il fournit exactement la même chose que le moteur actuel, si on ne modifie rien aux fichiers templates.

Exemple d'apport de twig : les blocs.
Mon home.html contient plein de code que je peux réutiliser dans post.html, par exemple le contenu du div id="main"
Il me suffit alors, dans home.html, au lieu de mettre :

<div id="main">
{% block main_section %}
contenu main du home.html
{% endblock %}
</div>

Mon post.html devient alors uniquement :

{% extends "home.html" %}
{% block main_section %}
... le contenu du bloc main de post.html
{% endblock %}

Après, on peut très bien  envisager une syntaxe beaucoup plus simple pour les valeurs.
Exemple :
{{entry.content}} au lieu de {{tpl:EntryContent}}
On peut aussi faire des opérations arithmétiques, gérer des tableaux ... un peu comme fait le plugin expat, mais en mieux :)


Dyslexics have more fnu!

Hors ligne

#4 2010-11-19 12:54:03

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : Réflexions sur le moteur de template vs Twig

Quelques exemples sont disponibles chez Twig : http://www.twig-project.org/book/02-Twi … -Designers


Dyslexics have more fnu!

Hors ligne

#5 2010-11-19 14:14:51

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : Réflexions sur le moteur de template vs Twig

Je comprends pas très bien ton exemple :

Dans la 2e partie de code, c'est vraiment {% block main %} ou {% block main_section %} ?


Dotclear addicted since 2004

Hors ligne

#6 2010-11-19 14:18:08

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : Réflexions sur le moteur de template vs Twig

Cela dit l'exemple là-bas ne m'est pas beaucoup plus clair non plus :-/

Il y a une certaine confusion entre la balise {% parent %} et l'héritage du modèle étendu (reprise des blocs absents) d'après ce que j'en ai compris.


Dotclear addicted since 2004

Hors ligne

#7 2010-11-19 14:26:07

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : Réflexions sur le moteur de template vs Twig

J'ai corrigé mon exemple, c'est bien main_section partout :)


Dyslexics have more fnu!

Hors ligne

#8 2010-11-19 15:35:15

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : Réflexions sur le moteur de template vs Twig

Ce que j'ai compris :

- On utilise {% parent %} pour rappatrier le contenu du même bloc déclaré dans le template parent.
- Si un bloc présent dans le template parent n'est pas présent dans le template qui étend, celui-ci est repris intégralement

Exemple :

parent.html

{% block colonne_gauche %}
…menu…
…liens…
{% endblock %}
{% block contenu_principal %}
…contenu parent…
{% endblock %}
{% block pied %}
…infos…
{% endblock %}

enfant.html

{% extends "parent.html" %}
{% block colonne_gauche %}
{% parent %}
…meta…
{% endblock %}
{% block contenu_principal %}
…contenu enfant…
{% endblock %}

La page générée pour enfant.html contiendra alors :

…menu…
…liens…
…meta…
…contenu enfant…
…infos…

Les 2 premiers sont récupérés via le {% parent %}
le dernier est récupéré parce que le bloc pied est absent

J'ai bon ?


Dotclear addicted since 2004

Hors ligne

#9 2010-11-19 15:38:51

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : Réflexions sur le moteur de template vs Twig

C'est exactement ça :)


Dyslexics have more fnu!

Hors ligne

#10 2010-11-19 15:41:11

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : Réflexions sur le moteur de template vs Twig

Et rien n'empêche de prévoir par la suite un home.html avec du code du genre :

{% for entry in context.entries %}
<div class="post">
<div class="post-title">{{entry.post_title}}</div>
<div class="post-content">{{entry.post_content}}</div>
</div>
{% endfor %}

(Il n'y a presque rien à coder, tout est déjà dans twig)


Dyslexics have more fnu!

Hors ligne

#11 2010-11-19 17:13:16

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Réflexions sur le moteur de template vs Twig

Je ne suis pas du tout un sorcier, comme chacun sait, mais je me permets juste une petite réflexion personnelle : cela ne revient-il pas à faire dépendre le développement des capacités de Dotclear du développement d'un programme externe ? Que se passera-t-il, par exemple, si une demande est faite pour ajouter une fonctionnalité aux balises de Dotclear ? Ne deviendrons-nous (nous, je veux dire les utilisateurs de DC comme moi) pas dépendants de l'évolution de Twig ? Et si le développement de Twig s'interrompt un jour... ? Il faudra de nouveau rechanger le système de balises de DC ?

Je ne veux surtout pas critiquer, ce sont juste des questions qui me sont venues à la lecture de ce sujet...

Hors ligne

#12 2010-11-19 17:26:29

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : Réflexions sur le moteur de template vs Twig

Dotclear est un moteur de blog, pas un moteur de templates, pas un éditeur wysiwyg, ...

Autant se centrer sur son coeur de métier. Comme je l'ai dit plus haut, le moteur de templates actuel a ses limites, et les moteurs existants font bien mieux.
Twig n'est pas la seule ressource externe : on n'a pas écrit de concurrent de jquery, et l'éditeur wysiwyg de dotclear vit aussi ses derniers jours (mois), pour laisser place à tinyMCE.

Pour en revenir à Twig, il est suffisemment flexible pour qu'on ait encore la main sur la manière de le customiser pour dotclear. Et puis il est bien soutenu, et son auteur n'est autre que le coauteur de Symfony...


Dyslexics have more fnu!

Hors ligne

#13 2010-11-19 20:58:35

Black Angel
Membre
Inscription : 2008-05-11

Re : Réflexions sur le moteur de template vs Twig

Plus j'avance sur des projets utilisant d'autres logiciels, plus je trouve le principe des templates vraiment fabuleux. Si on garde la même facilité de mise en place et que cela augmente les possibilités d'utilisation, alors tout changement me convient.

Et si d'autres projets utilisent Twig, cela peut aussi attirer des personnes vers Dotclear. Donc un bon point, même si le but final n'est pas particulièrement celui-là, ça reste un effet positif.

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map