Piwigo par le biais de son prédécesseur PhpWebGallery avait intégré un principe assez mal compris, celui des templates-extensions (T-E.).
Le principe était alors simplement décrit et devait encore être codé, ce que j’ai réalisé dans Piwigo 2.0.

Les T-E. de Piwigo étaient sensés permettre vos adaptations tout en autorisant les évolutions des templates standards. Donc de permettre d’identifier rapidement les différences. Afin que les évolutions puissent être également appliquées à vos adaptations.
Les T-E. sont ni plus ni moins que des templates qui sous certaines conditions remplacent les templates standards.

Pour identifier rapidement les différences, il aurait été nécessaire de proposer un outil de comparaison entre chaque T-E. et son template d’origine. Ceci afin que les évolutions soient rapidement prises en compte.
De l’absence de comparateur et pour la raison évoquée ci-après, nous assisterons à la fin programmée des T-E.
La logique de thème parent a tendance à se généraliser dans bon nombre d’applications et surtout elle a pris le pas sur l’orientation template de Piwigo.
Il s’en suit des incohérences entre les templates fournis par les thèmes, incohérences devenant bloquantes parfois pour certains plugins.
Prenons un exemple récent : RV Maps and Earth (un fabuleux plugin de rvelices) ne fonctionne pas actuellement avec le thème Luciano.
Même si cela sera sans doute vite corrigé, ce type d’incohérences conduit :
- soit à multiplier les plugins afin de répondre aux problématiques créées par un thème (et parfois tous les thèmes enfants) et pour s’en convaincre il suffit de chercher un plugin de WordPress;
- soit à faire évoluer le thème et vous faire perdre vos adaptations.

Si les thèmes parents/enfants se généralisent, il semble évident que les T-E. n’auront plus lieu d’être. Cependant, ceux-ci permettaient de présenter vos pages sur la base de conditions totalement originales comme une catégorie spéciale ou un lien permanent (permalink).
C’est là qu’intervient la fonction getParam().
Exemples:
- getParam(‘most_recent’) permettra de sélectionner un template particulier aux images récentes peut-être,
- getParam(‘category/Paris’) permettra d’ajouter un script particulier,
etc.

Comment coder un tel template (évolutif) dans son thème ?
Dans mon_theme/template/ par exemple pour créer un header.tpl évolutif…

{if getParam('recent_pics')}
  {include file='recent.tpl' assign=RECENT_BANNER}
  {include file="../../default/template/header.tpl" PAGE_BANNER=$RECENT_BANNER} {* le path doit être relatif depuis themes/mon_theme/template/ *}
{else}
  {include file="../../default/template/header.tpl"}
{/if}
{if getParam('category/Paris')}
{known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.packed.js"}
{known_script id="topbar" src=$ROOT_URL|@cat:"local/js/topbar.js"}
{/if}

Explications du code ci-dessus:
- si l’url contient recent_pics, on génèrera une bannière spécifique.
- si l’url contient un lien permanent de catégorie vers « Paris » un script sera ajouté à la page… avant le </head> (Page de miniatures et page picture).

Cette astuce permet de traiter la grande majorité des cas de figure traités par les T-E actuels de Piwigo.

En attendant, la fin programmée des T-E. les points restants en leur faveur sont:
1 – La sécurité (les curieux ne pourront pas découvrir l’emplacement de votre T-E. et, du fait, son contenu avant inclusion dans la page).
2 – La modification globale (Ajout d’éléments communs à toutes les pages et quel que soit le thème).
3 – La réduction du besoin de plugin (pour tous ceux qui ne maîtrisent pas assez le php), la modification globale (sans critère) permet de s’éviter d’avoir à coder un plugin personnel (lequel serait plus complexe à maintenir).

Pour la grande majorité des débutants, espérons que les T-E. (templates-extensions) aient la vie dure, même si leur utilisation semble complexe au début.