jag har krafsat ihop en minimal template class som verkar fungera ok. Dock så måste jag skriva <?=DEF_VALUE;?> istället för önskat {DEF_VALUE} i mitt template. Finns det någon som ett snabbhack för detta ? Behöver omg :birp
Template
5 svar · 490 visningar · startad av Fuel
Kolla in källkoden på denna, det kanske kan hjälpa dig?
http://www.massassi.com/bTemplate/index.php?page=download
Fuel skrev:
Dock så måste jag skriva <?=DEF_VALUE;?> istället för önskat {DEF_VALUE} i mitt template.
Efter närmare eftertanke. Nu vet jag inte hur ditt template ser ut men borde det inte bara vara att göra en replace när du parsar?
Dvs:
{ = <?
och
} = ;?>
Tredje gången gillt! Det du ska göra är att du kör en echo på resultat du får när du hämtar/parsar ditt template.
// Hämta template, inkluderar att templatet parsas...
echo $tpl->fetch('myTemplate.tpl');
Detta är en förenklad version av mitt template script. Det används (detta är en gammal version dock) i mitt template system där varje sida är en xml fil som parsas efter innehåll och säkerhets access för olika grupper <-> sidor, samt stöder flera språk.
Alla variabler anges i formatet %var_name%
<?php
require_once('common.php');
FileSafetyCheck();
class Template
{
var $content;
var $vars = Array();
function SetVar($varName, $value)
{
$this->vars[$varName] = $value;
}
function Insert($varName, $template)
{
global $config, $lang;
$template = $config['template_dir'] . '/' . $config['lang'] . '/' . $template;
$file = fopen($template, 'r');
if (!$file)
exit($lang['TEMPLATE_NOT_FOUND'] . '(' . $template . ')');
$insertContent = fread($file, filesize($template));
$this->content = str_ireplace('%' . $varName . '%', $insertContent, $this->content);
}
function Load($template)
{
global $config, $lang;
$template = $config['template_dir'] . '/' . $config['lang'] . '/' . $template;
$file = fopen($template, 'r');
if (!$file)
exit($lang['TEMPLATE_NOT_FOUND'] . '(' . $template . ')');
$this->content = fread($file, filesize($template));
}
function ProcessToString()
{
$str = $this->content;
foreach ($this->vars as $key => $value)
{
$str = str_ireplace('%' . $key . '%', $value, $str);
}
return $str;
}
function Process()
{
print($this->ProcessToString());
flush();
}
}
?>