Hilfer bei eigenem tpl system

Kategorien: PHP & MySQL
7 Antworten
eternitysoft
eternitysoft am Dienstag, 26. Juli 2005 um 17:34
Hallo hab mir mal nen eigenen tpl parser geschrieben (ist nicht gerade der beste aber sollte erstmal reichen) jetzt fehlt mir nurnoch eine sache wo ich momentan kein plan hab wie ich die einbauen soll und zwar möchte ich auch schleifen parsen können (für z.B News die aus der Db ausgelesen werden und mehrere angezeigt werden) naja hier mal mein code <?php class tpl { var $path; var $contents; var $content; var $handle; ############ F&uuml;r das Parsen von normalen dateien ########################## function load ($template) { $pfad = "template/"; $end = ".tpl"; $this->path = $pfad.$template.$end; $this->handle = @fopen($this->path,"r"); if (!$this->handle) { echo "Konnte Datei <font color="red">($this->path)</font> nicht &ouml;ffnen"; exit(); } $this->contents = implode("",file($this->path)); fclose ($this->handle); } function replace($search,$replace) { $this->contents = str_replace("{$".$search."}", $replace,$this->contents); } function get() { echo $this->contents; } } ############ F&uuml;r das Parsen von db daten ########################## function sql_load($table,$where) { $this->sql = "SELECT content from ".$table." where name ='".$where."'"; $this->sql_query =mysql_query($this->sql); while($row = mysql_fetch_object($this->sql_query)) { $this->content =$row->content; } } function sql_replace ($search,$replace) { $this->content = str_replace("{$".$search."}", $replace, $this->content); } function sql_get() { echo $this->content; } ?>

Kommentare

Markus René Einicher
Markus René Einicher am Freitag, 29. Juli 2005 um 21:10

Auf die Art Beitrag wirst du nie eine Antwort kriegen, niemand hat Zeit und Lust sich in einen fremden Quelttext einzulesen und dann Fertiglösungen zu servieren.

In einem Forum musst du eigene Denkanstöße liefern und dahingehend nach der Umsetzung fragen.

Ich muss dich aber warnen, ich bin bei meinem Cepra zwei Wochen dran gesessen und regelrecht dran verzweifelt, das is echt komplex.

crassity
crassity am Samstag, 30. Juli 2005 um 12:36

Hallo zusammen.

Also mal ganz ehrlich, einen eigenen Template-Parser zu schreiben ist vielleicht gut für den Lerneffekt, aber warum (wie so oft wenn es ums Programmieren geht) das Rad neu erfinden?

Wieso benutzt du nicht einfach Smarty oder Sigma? Diese Systeme sind weitaus Komplexer als etwas selbstprogrammiertes und die einbindung bzw. einarbeitung ist kürzer bzw. einfacher als stundenlang nach einem fehler im eigenen System zu suchen.

Da diese Systeme OpenSource sind und unter der GNU veröffentlich wurden kannst du sie, wenn du die richtlinien einhälst, auch in Kommerziellen Projekten benutzen.

Ich selber benutze Smarty und ich muss sagen, dass ich bis jetzt noch nichts vergleichbares gefunden habe. Die Möglichkeiten, es an seine eigenen Bedürfnisse anzupassen, und die Möglichkeit, PHP Code im Template zu benutzen, macht Smarty einfach einzigartig.

So, das musste ich jetzt mal sagen, hab mich nämlich auch mal ne ganze weile mit einem selbstgeschriebenen Parser rumgeqäult:)

Schönes WE noch

Micha

Markus René Einicher
Markus René Einicher am Samstag, 30. Juli 2005 um 13:17

Eben das Smarty PHP-Code ausführt ist sein größtes Manko, das darf bei einem echten Template nämlich absolut nicht sein, der Quelltext mus vollkommen von der Ausgabe getrennt sein, sonst macht es wenig Sinn.

FrAgDeViL
FrAgDeViL am Samstag, 30. Juli 2005 um 15:35

ich weiß überhaupt nicht, was ein tpl system ist.
kann es jemand ma kurz erklären?

unkie
unkie am Samstag, 30. Juli 2005 um 20:29

Über ein Template-System kannst du Design recht gut vom Code trennen! Es werden HTML und PHP oder welche Sprache auch immer getrennt von einander gespeichert! So muss man uch nicht immer alles neu Coden wenn man ein neues Desing hat ;)

smarty.php.net (english!!!) für mehr infos

eternitysoft
eternitysoft am Samstag, 30. Juli 2005 um 21:41

also hab folgenden ansatz


<?php
function replace($search,$replace)
{
if (is_array($replace))
{
$count = count ($replace);
for ( $i = 0; $i <= count; $i++)
{
$this->contents = str_replace("{$".$search."}", $replace[$i],$this->contents);
}
}else{

$this->contents = str_replace("{$".$search."}", $replace,$this->contents);
}
}
?>

problem ist das er nur das erste aus dem array ausgibt und das ich die array ja dann so zuweisen müsste


<?php
$array = array ( 0 =&#039;eintrag1&#039;,
1 =&#039;eintrag2&#039;
);
?>

sprich mit zahlen

crassity
crassity am Sonntag, 31. Juli 2005 um 11:54

Ok, vielleicht hab ich mich falsch ausgedrückt. Smarty bietet die Möglichkeit in gewissem umfang PHP Code oder Smarty-Tags auszuführen. Das bedeutet Smarty kann z.B. if-Abfragen ausführen. Das heisst aber nicht, dass man unbedingt PHP-Code im Template ausführen muss. Für erfahrene benutzer könnte sowas aber evtl. von vorteil sein.

Noch ein großer, wenn nicht vielleicht der wesentlichste vorteil von smarty, ist das die Templates komplett gecachet werden und somit die performance um einiges steigt. Auf gut Deutsch also die Seite baut sich schneller auf.

Naja, wie gesagt, man muss Smarty nicht mögen, mich hat es aber überzeugt.

Schöne Grüße

Micha