Piwigo utilise un système de templates pour générer des pages web. Un template est un morceau de code HTML dans lequel seuls quelques éléments d’information seront modifiés d’une utilisation à l’autre. Un template simplifie la plupart des adaptations.
Par contre, ce système pourrait vous priver d’une partie des évolutions de Piwigo. Si vous adaptez une partie d’une page web, et si celle-ci a besoin d’être complétée ou transformée par l’équipe de conception, alors votre adaptation pourrait masquer les nouveautés.
En comparaison, une application comme WordPress sans template vous privera des évolutions de thème, ou les évolutions effaceront toutes vos adaptations. En général les applications, qui n’utilisent pas de templates, auront beaucoup de thèmes mais ceux-ci resteront sans évolution.
Assurément, il n’y aurait pas de solution idéale.
Nous allons voir pour Piwigo comment coder un template évolutif dans un thème personnel.
Ci-dessous vous trouverez un exemple d’un header.tpl évolutif…
{assign var=HOME_BANNER value=$PAGE_BANNER|cat:$BANNER}
{include file='topbar.inc.tpl' assign=TOPBAR}
{include file="../../default/template/header.tpl" theSwiftHeader=$TOPBAR PAGE_BANNER=$HOME_BANNER}
{* le path doit être relatif depuis themes/xxxx/template/ *}
{html_head}
<style type="text/css" src="{$ROOT_URL}themes/{$themeconf.id}/css/extension.css"}">
{/html_head}
Explications du code ci-dessus :
{include file=’hello.inc.tpl’ assign=BANNER}
Le code html contenu dans votre thème ./template/hello.inc.tpl sera affecté à la variable BANNER (Un logo par exemple).
{assign var=HOME_BANNER value=$PAGE_BANNER|cat:$BANNER}
La variable HOME_BANNER va recevoir la concaténation (cat) de la bannière standard ($PAGE_BANNER) avec celle produite par hello.inc.tpl
{include file=’topbar.inc.tpl’ assign=TOPBAR}
Là encore, du code html contenu dans votre thème ./template/topbar.inc.tpl sera affecté à la variable TOPBAR (Des liens du site vers votre forum, votre blog, etc).
{include file= »../../default/template/header.tpl » theSwiftHeader=$TOPBAR PAGE_BANNER=$HOME_BANNER}
C’est là l’essentiel, au lieu de copier le header standard, le thème va l’inclure et ainsi profiter de ses évolutions.
Mais également la variable theSwiftHeader va prendre la valeur de TOPBAR (nos liens)
et la variable PAGE_BANNER prendra la valeur de HOME_BANNER (notre bannière avec son logo).
En incluant le header standard, le thème continuera à bénéficier des évolutions du header standard, tout en pouvant être différent.
C’est assez simple, mais surtout cela fonctionne bien.
Une seule réserve: lors de l’include du template d’origine faites attention à décrire le chemin relatif à partir de themes/xxxx/template/
{html_head}
<style type= »text/css » src= »{$ROOT_URL}themes/{$themeconf.id}/css/extension.css »} »>
{/html_head}
Ajout d’un style complémentaire ou plus avant la balise </head> (Cf. Javascript interprété inutilement)
Remarque: Cette astuce n’est qu’une application des fonctionnalités de Smarty (le moteur de templates utilisé par Piwigo)
.
