Héritage et extension

Thème MyBlog de Ben Griffith

Un petit billet sur deux astuces souvent ignorées pour la création des templates des thèmes.

Hériter d’un fichier template de même nom

Il arrive que pour un thème ou un plugin on ait besoin de reprendre le contenu quasi intégral du même template que celui du jeu de templates (ou d’un des plugins qui l’enrichit) sur lequel il s’appuie. Exemple, j’ai besoin de ne modifier qu’un seul des blocs du template post.html.

Dans ces cas là, il suffit alors de préciser que l’héritage se réfère au « parent », c’est-à-dire le fichier template de même nom du jeu de template :

{{tpl:extends parent="__parent__"}}

Le mot magique est ici __parent__ !

Le compilateur de template reprendra dans ce cas le contenu du fichier parent, c’est-à-dire celui portant le même nom du jeu de templates, par exemple post.html puis remplacera dans ce contenu uniquement les blocs (<tpl:Block name=”…”>…</tpl:Block>) définis ensuite.

Ajouter du contenu à un bloc en conservant le contenu original

Il arrive aussi qu’on ait besoin d’ajouter du contenu personnalisé à un bloc défini dans un fichier du jeu de template. Dans ce cas il existe une balise spéciale qui permet de récupérer le contenu original pour ensuite ne s’occuper que de ce qu’on ajoute, avant et/ou après. Celle balise est {{tpl:parent}} :

{{tpl:extends parent="__parent__"}}

<tpl:Block name="main-content">
	…		<!-- # Your very own content inserted before the original content -->

	{{tpl:parent}}	<!-- # include the original content of this block from the parent (defined on the 1st line of this file) -->

	…		<!-- # Your very own content inserted after the original content -->
</tpl:Block>

Ici je récupère l’intégralité du fichier parent du jeu de template, par exemple post.html si mon fichier se nomme comme tel, puis je redéfinis le contenu du bloc main-content en ajoutant ce qui m’intéresse devant et derrière son contenu original récupéré avec la balise {{tpl:parent}}.

Ça permet de ne se préoccuper uniquement que du delta et de profiter le cas échéant des améliorations apportées dans les versions successives des jeux de template.

Quoi qu’il en soit on en reparlera bientôt quand je vous expliquerai comment j’adapte des thèmes Wordpress à Dotclear…


Question à laquelle j’ai souvent réfléchi mais à laquelle je n’ai pas encore de réponse définitive :

Est-ce que la granularité des blocs définis dans les différents jeux de template est suffisamment fine ou pas ? Dis autrement, est-ce qu’on descend assez bas dans le détail du contenu des blocs ou faut-il en définir de plus bas niveau ?

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/12970

Haut de page