Autor Zpráva
Marek(cz)
Profil *
Nevíte, kde mám chybu? Jsem už uplně zoufalý!
class_template.php:
<?php
class CTemplate {
var $template_name;
var $template_dir = './templates/';
var $content;
var $assign = array();

function CTemplate($template_name) {
// Zjistíme, zda existuje soubor s šablonou
if(file_exists($this->template_dir.'/'.$template_name)) {
$this->template_name = $template_name;
}else{
echo 'Zadaný soubor '.$template_name.' nebyl nalezen !';
exit;
}
// Načteme soubor do proměnné
$open_file = fopen($this->template_dir.'/'.$this->template_name, 'r');
$this->content = fpassthru($open_file);
}


function parseTemplate() {
foreach($this->assign as $key => $value) {
$this->content = preg_replace($key,$value,$this->content);
}
echo $this->content;
}

function setAssign($name,$value) {
$this->assign[$name] = $value;
}

function setTemplateDir($template_dir) {
$this->template_dir = $template_dir;
}

} // Konec class
?>

Index.php:
<?php
include 'class_templates.php';
$tpl = new CTemplate('sablona.tpl');
$tpl->setAssign('{title}','Titulek');
$tpl->setAssign('{body}','Body');
$tpl->parseTemplate();
?>

Sablona.tpl:
<html>
<head>
<title>{title}</title>
</head>
<body>{body}</body>
</html>

A vypíše to:
{body}
Marek(cz)
Profil *
Teda, vypíše to {body}82
Kaifman
Profil
chyba je v tomhle

$this->content = fpassthru($open_file);

fpassthru totiž nevrací obsah souboru jako retezec do promené $this->content ale vypisuje obsah souboru rovnou na obrazovku

místo fpassthru pouzij toto a mělo by to fungovat

$this->content = fread ($open_file, filesize ($this->template_dir.'/'.$this->template_name) );
Marek(cz)
Profil *
Jsem vůl, no :)
Ted mi to zas píše výstup jako:
<html>
<head>
<Titulek>{Titulek}</Titulek>
</head>
<Body>{Body}</Body>
</html>

:-)))))
Marek(cz)
Profil *
Tak už jsem to opravil!!! Díky moc.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0