htmlcss.fr Des tutos ou tutoriels Wordpress, html, php ou javascript.

PHP : micro système de template

P

Parfois on a besoin de pouvoir interagir avec des templates sans vouloir charger une grosse librairie genre Twig. On peut aussi ne pas trop apprécier le système get_template_part() de WordPress. Bref, on a juste besoin de passer quelques variables dans un template et de récupérer le résultat. Vite fait. Cela peut être utile dans bien des cas.

Voici donc une petite fonction qui permet de charger un fichier PHP en y passant des variables et de récupérer une string. Il est possible de lui passer tout type de variables.

Actuellement elle est prévue pour fonctionner avec WordPress. Mais en la bricolant un peut vous pourriez la transformer pour un autre usage. Il faudrait remplacer la fonction locate_template() à la ligne 3. Le code source de cette fonction est donné dans la doc…

Petit détail important : le nom des variables doit être identique dans le template et dans l’appel de la fonction.
Voici la fonction:

function load_tpl($templateName, $vars = array())
{
  $template = locate_template('templates/'.$templateName.'.php');
  if (!file_exists($template)) {
    throw new Exception('Template '.$templateName.' introuvable.');
  }
  ob_start();
  extract($vars);
  include $template;
  $content = ob_get_contents();
  ob_end_clean();
  return $content;
}

Voici le template d’exemple appeler

<h2><?= $titre ?></h2>
<u>
<?php
foreach ($liste as $key => $value) {
  echo '<li>'.$value.'</li>';
}
?>
 </u>

Et enfin voici un exemple d’appel

$tpl_string = load_tpl('email/liste', array(
  'titre' => 'Fruits', 
  'liste' => array('pomme', 'abricot')
);

Je vous laisse deviner le résultat…
PS : vous devez quand même faire un « echo » ou un <?= $myvar ?>

htmlcss.fr Des tutos ou tutoriels Wordpress, html, php ou javascript.

François Riant

Je m’appelle François Riant. Je travail dans les métiers du web depuis 2006. Mon expérience m’a amené à changer plusieurs fois de technologie.

Aujourd’hui je cherche à partager mon expérience et j’y trouve du de plaisir. Je travail actuellement chez W2P Digital.
Je ne prends donc pas de mission en freelance.

Si vous avez une remarque ou une question; vous pouvez me joindre sur francois.riant@gmail.com