Template-uri in Php
Acum vreo doi ani am găsit clasa de mai jos pentru lucrul cu template-uri. Cred ca e cea mai simpla clasa de acest gen. Practic se parsează un fișier html unde se înlocuiesc tagurile {nume}
cu un conținut setat de către utilizator. Daca nume = "Continut" atunci peste tot unde se gaseste {nume}
se va inlocui cu codul html.
Continut "tpl.class.php"
/***************************************************************************
*
* Author : Eric Sizemore ( www.secondversion.com & www.phpsociety.com)
* Package : Simple Template Engine
* Version : 1.0.2
* Copyright: (C) 2006 - 2007 Eric Sizemore
* Site : www.secondversion.com
* Email : hide@address.com
* File : tpl.class.php
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
***************************************************************************/
// Template engine
class template
{
/**
* Template variables and their replacements
*
* @var array
*/
var $tpl_vars;
/**
* Constructor
*/
function template()
{
$this->tpl_vars = array();
}
/**
* Assign our variables and replacements
*
* @param array Template variables and replacements
* @return none
*/
function assign($var_array)
{
// Must be an array...
if (!is_array($var_array))
{
die('template::assign() - $var_array must be an array.');
}
$this->tpl_vars = array_merge($this->tpl_vars, $var_array);
}
/**
* Parse the template file
*
* @param string Template file
* @return string Parsed template data
*/
function parse($tpl_file)
{
// Make sure it's a valid file, and it exists
if (!is_file($tpl_file))
{
die('template::parse() - "' . $tpl_file . '" does not exist or is not a file.');
}
$tpl_content = file_get_contents($tpl_file);
foreach ($this->tpl_vars AS $var => $content)
{
$tpl_content = str_replace('{' . $var . '}', $content, $tpl_content);
}
return $tpl_content;
}
/**
* Output the template
*
* @param string Template file
*/
function display($tpl_file)
{
echo $this->parse($tpl_file);
}
}
Exemplu
Un exemplu foarte simplu folosind clasa "template" arata cam asa:
include("tpl.class.php");
$header = "Header";
$meniu = "linkuri meniu";
$continut = "continut pagina";
$footer = "linkuri footer";
$tpl_pagina = &new template();
$tpl_pagina->assign(array('modul_header' => $header,
'modul_meniu' => $meniu,
'modul_continut' => $continut,
'modul_footer' => $footer
)
);
$pagina_de_afisat = $tpl_pagina->display_template('templates/new-newsletter/interfata.tpl');
echo $pagina_de_afisat;
Template
Conținutul interfata.tpl este o pagina normala html dar care conține următoarele variabile {modul_header} {modul_meniu} {modul_continut} {modul_footer}
, care vor poziționate în website unde dorește utilizatorul. Practic posibilitățile sunt nelimitate, iar partea de html este complet deconectata de Php. Mai simplu de atat nu se poate.
O zi plăcută tuturor !