![]() |
[PHP] Problem mit Templatesystem
Tag, ich habe heute ein Templatesystem geproggt. Funktioniert auch einwandfrei, solange die TPL-Datei im selben Ordner wie das Skript liegt, wenn ich die Templatedateien in einen extra Ordner tue und dann die Datei lade, zeigt er mir zwar den Text an, aber Bilder und CSS Dateien lädt er nicht.
Hier der Code des Templatesystems:
Code:
Ausgeben tu ich dann so:
<?php
class template { var $uncompiled = array(); var $compiled = array(); var $dir = ''; var $_tpldata = array(); // // Verzeichnis setzen // function SetDir($directory) { $this->dir = $directory; chdir($this->dir); } // // Template laden // function LoadTemplate($filename,$templatename) { if (file_exists($filename)) { $this->uncompiled[$templatename] = implode('',file($filename)); } else { die('Die Datei [b]'.$filename.'[/b] existiert nicht'); } } // // Eine Variable ersetzen // Bsp: ReplaceVar('index','{Inhalt}','Das ist ein Test'); // function ReplaceVar($templatename,$varname,$variable) { $this->uncompiled[$templatename] = str_replace($varname,$variable,$this->uncompiled[$templatename]); //$this->uncompiled[$templatename] = str_replace($varname,$variable,$this->code[$templatename]); } function assign_vars($templatename,$vararray) { reset ($vararray); while (list($key, $val) = each($vararray)) { $this->ReplaceVar($templatename,$key,$val); } return true; } // // Template ausgeben // function Out($templatename) { $str = $this->uncompiled[$templatename]; $str = str_replace('\\','\\\\',$str); $str = str_replace('\'', '\\\'', $str); print $str; } }?>
Code:
Weiß jemand wie das geht, dass er die Bilder dann auch anzeigt?
$tpl->SetDir('templates');
$tpl->LoadTemplate('body.tpl','body'); $tpl->Out('body'); |
Re: [PHP] Problem mit Templatesystem
es kommt darauf an, wohin die urls zeigen. es muss natürlich relativ zur einbindenden und nicht zur eingebundenen datei sein. überprüf das mal. einfach mal generieren lassen und die URLs im code anschauen.
|
Re: [PHP] Problem mit Templatesystem
Zitat:
|
Re: [PHP] Problem mit Templatesystem
ein beispiel:
Code:
wenn du nun in deinem tpl-file
root -> HP -> html -> tpl -> 1.tpl
-> img -> img.gif -> php -> tpl -> index.php [img]../../img/img.gif[/img] hast, stimmt das vom tpl her schon - im php, das an den browser ausgegeben wird, verweist das dann aber auf /HP/php/img/img.gif und das gibts nicht. EDIT: kann sein, dass ich da ein bisschen was durcheinander bring, prinizpiell stimmst aber so! |
Re: [PHP] Problem mit Templatesystem
die CSS Datei liegt im selben Ordner wie die TPL Datei, dass heißt, ich hab sie einfach so eingebunden:
Code:
Und die Templatedatei findet er ja: nur die CSS Dateien kriegt er irgendwie nicht hin
<link rel="stylesheet" type="text/css" href="design.css">
|
Re: [PHP] Problem mit Templatesystem
Ich versuche nochmal ausführlich zu beschreiben, was Luke meinte (ist echt nicht einfach zu beschreiben):
Dein Problem ist, dass die erstellende Datei (ich nehme mal an index.php im Wurzelverzeichnis) und die Templatedatei nicht im selben Verzeichnis liegen. Beispiel: Deine Homepage liegt bei /index.php Dein Template liegt in /template/main.tpl und hat dort auch (u.a.) die Datei /template/style.css In der Ergebnisdatei (die index.php erzeugt) steht eine Referenz auf die "style.css" ohne Verzeichnisangabe, d.h. der Browser erwartet sie im selben Verzeichnis wie die "index.php" und nicht im selben Verzeichnis wie dein Template (der Browser weiß ja nichts von deinem Template). Aus dieser Misere kommst du nur heraus, indem du 1. Das Template und alle Dateien wieder in dasselbe Verzeichnis packst wie die index.php oder 2. zumindest alle anderen Dateien (außer dem Template) dorthin kopierst - dann kannst du dir die Template-Datei aber nicht mehr ansehen (der fehlen dann ja die Files) oder 3. Du erweiterst deinen Template-Parser so, dass alle relativen Bezüge angepasst werden. |
Re: [PHP] Problem mit Templatesystem
danke, hab's jetzt gelöst
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz