Niveau: avancé.
Le plugin «personnel» va évoluer et passer au service de l’économie de code. Il sera plus simple et probablement il redeviendra une source d’idées nouvelles afin de nous permettre d’identifer les fonctions de Piwigo que nous devrons externaliser.
Lire l’article: « Economie de plugins »
Reprenons le même exemple, mais cette fois je vous invite à refaire la démarche inverse.
Nous avions obtenu:
{php}
global $user;
$this->assign('USER_LEVEL', $user['level']);
{/php}
{if $USER_LEVEL >= 1}
Vous avez été reconnu par le webmaster comme une personne ayant plus de droits que d'autres...
{/if}
Première remarque assez gênante:
La présence de {php}, alors que nous souhaitons séparer le code php du code html.
Seconde remarque:
L’ « assign », alors que le template n’a que faire de cette nouvelle variable, hormis la tester une seule fois. Pourquoi être dans l’obligation de créer une variable?
Ceci nous conduit à éliminer l’handler certes mais également l’assign.
Solution: « LocalFiles Editor » (Merci P@t), onglet « Plugin Personnel »
if (!function_exists('permission_level')) {
function permission_level() {
global $user;
return $user['level'];
}
}
Et dans son template on ne code plus que ceci:
{if permission_level() >= 1}
Vous avez été reconnu par le webmaster comme une personne ayant plus de droits que d'autres...
{/if}
Quelque part, Smarty nous invite à réinventer la roue puisque dans une application sans moteur de template, nous coderions:
<?php
if (permission_level() >= 1) { ?>
Vous avez été reconnu par le webmaster comme une personne ayant plus de droits que d'autres...
<?php
} ?>
(Ce dernier exemple ne fonctionnera pas avec Piwigo).
Voire même encore plus simple. De toute façon, la séparation code php et code html s’en trouveraient fortement lésée.
Or l’important est de bien simplifier les deux langages et limitant surtout la présence de code php dans le code html (et lycée de versailles, cela va de soi).
Quelques règles :
1 – Publier: « assign » dans le template, quand une donnée est facile à atteindre mais non prévue, et que son contenu est à publier.
2 – Tester: « Appel d’une fonction » dans le template, quand cette fonction n’est pas sollicitée plusieurs fois, que cette fonction s’intègre dans un if (par exemple), et surtout que la valeur retournée n’a pas besoin d’être publiée.
3 – Accéder aux tables, parsing d’autres templates, …: Plugin.
4 – Enfin, pas des moindres: se relire!
Ce que l’on souhaite, c’est de livrer quelque chose de simple, lisible et performant.
Passez maître en économie! Moins j’en écrit, moins je fais de « fôtes ».