Questa è la classe:
template_parser.php
Codice PHP:
<?php
class template_parser {
var $output;
function template_parser($tags = array(), $cache_file = 'cache.txt', $durata = 0, $template_file = 'index.htm') {
if (!$this->output = $this->leggi_cache($cache_file, $durata)) {
(file_exists($template_file)) ? $this->output = file_get_contents($template_file) : die('Errore: File ' . $template_file . ' not found');
$this->parser($tags, $cache_file);
}
}
function parser($tags, $cache_file) {
if (count($tags) > 0) {
foreach ($tags AS $k=>$v) {
$v = (file_exists($v)) ? $this->parseFile($v) : $v;
$this->output = str_replace('{' . $k . '}', $v, $this->output);
}
$this->scrivi_cache($cache_file, $this->output);
} else {
die('Errore: Non ci sono tag assegnati per rimpiazzare i valori');
}
}
function mostra() {
return $this->output;
}
function parseFile($file) {
ob_start();
include($file);
$contenuto = ob_get_contents();
ob_end_clean();
return $contenuto;
}
function leggi_cache($cache_file, $durata) {
if (file_exists($cache_file) && filemtime($cache_file) > (time() - $durata)) {
return file_get_contents($cache_file);
}
return FALSE;
}
function scrivi_cache($cache_file, $contenuto) {
$fp = fopen($cache_file, 'w');
fwrite($fp, $contenuto);
fclose($fp);
}
}
?>
è in php4.. il funzionamento è abbastanza semplice.. si tratta di creare un file di template anche html tipo: template.htm
Codice PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{titolo}</title>
<link rel="stylesheet" style="text/css" media="all" href="***.css" />
</head>
<body>
<div id="testata">{logo}</div>
<div id="menu">{menu}</div>
<div id="contenitore">
<div id="colonna">{colonna}</div>
<div id="contenuti">{com_content}</div>
</div>
<div id="footer">{footer}</div>
</body>
</html>
per utilizzare la classe crei un foglio index.php cosi:
Codice PHP:
<?php
error_reporting(E_ALL);
require_once('template_parser.php');
$tags = array('logo' => 'logo.inc',
'menu' => 'include/menu.inc.php',
'colonna' => 'colonna.php',
'com_content' => 'switch.php',
'footer' => 'footer.inc'
);
$temp =& new template_parser($tags, 'cache.txt', 3600, 'template.htm');
echo $temp->mostra();
?>
l'array tags ha come chiavi le parole contenute nel file template tra {}.. e come valori dei file che vuoi importare di qualsiasi tipo..
Il numero 3600 ti dice in secondi ogni quanto vuoi che il file di cache.txt venga aggiornato, in questo caso un'ora..
Tieni per buono anche il consiglio di robertes cmq..