le template dans une variable string et pas en echo
Pour placer les choses, j'utilise encore le moteur de template de phpBB1 (enfin, je crois, celui qui a été fait en 2001), comme indiqué dansce tutoriel.
la fonction pparse de la classe template imprime (affiche sur la page web) le résultat de la génération d'un template. j'avais besoin de générer un template mais pas de l'afficher, de l'envoyer dans une variable de type string (pour préparer un mail en fait).
Tout est prévu dans la fonction compile. Encore faut-il l'utiliser.
je me suis donc écrit la function pstring qui est une pale copie de la function pparse.
function pstring($handle) { $plop=""; if (!$this->loadfile($handle)) { die("Template->pparse(): Impossible de charger le fichier template pour le modèle $handle"); } // actually compile the template now. if (!isset($this->compiled_code[$handle]) || empty($this->compiled_code[$handle])) { // Actually compile the code now. $this->compiled_code[$handle] = $this->compile($this->uncompiled_code[$handle],true,'plop'); } // Run the compiled code. //eval($this->compiled_code[$handle]); eval($this->compiled_code[$handle]); return $plop; }
Je l'utilise presque de la même façon que pparse aussi.
<?php include('template.php'); // on créé une nouvelle instance de la classe Template // et on indique en argument le chemin vers les modèles $template = new Template('./'); // modèle à utiliser auquel on adjoint un nom arbitraire $template->set_filenames(array( 'body' => 'template1.tpl' )); // Assignation des variables $template->assign_vars(array( 'PSEUDO' => $row['pseudo'], 'EMAIL' => $row['email'] )); // evoie des données dans une variable des données $variable= $template->pstring('body'); ?>
Télécharger le template.php v1.10 avec la function pstring by gniearkt