PHP Template Parser

stefanstfnh

Grünschnabel
Guten morgen,
Kann ich in einer Funktion mit
Code:
return str_replace("\"","\\\"",implode("",file($template.".".$endung)));
nicht gleichzeitig
Code:
eval ("\$str .= \"".gettemplate("wiederholung")."\";");
mit einsetzen das der Templateaufruf auch so möglich ist.
Code:
functionname("templatename","platzhalter für $str");
All meine bisherigen Versuche dies umzusetzen schlugen bisher fehl.
Danke im Vorraus.
Gruß.
 
Da der Code ja auch tatsächlich aus einem Tutorial stammt, hast Du wohl den Sinn des Tutorials nicht verstanden. Es geht lediglich nur darum die den Sinn dieser Funktion zu vermitteln.

Versuch es doch mal mit Template Engines ala -> Smarty

Das ist eine leicht verständliche jedoch starke Engine, welche deinen Wünschen gerecht wird.

Gruß Mirko
 
Prinzip habe ich verstanden.
Mein einziges Problem ist die integration von
eval ("\$str .= \"".gettemplate("wiederholung")."\";");
in die Funktion.
Die Variablen in einer aufgerufenen html datei werden so nicht verarbeitet.
 
Mach dir doch eine Funktion die das ganze beeinhaltet!

PHP:
function templates($template,$string) { 

eval ("\$string .= \"".gettemplate($template)."\";");
return true; 

}

Gruß Mirko
 
Danke war natürlich auch meine erste vermutung.
blos folgendes.
der erste aurfuf erfolgt über eval ("echo ......
in diesem Template aufruf befinden sich auch Variablen.
Diese werden dann mit deiner Funktion nicht verarbeitet.
Sprich die Seite bleibt ohne inhalt.
ich nehme an das es an
eval ("\$string .=
liegt.
 
Ja is klar.
Blos müssen Variablen auch verarbeitet werden was in der Funktion nicht mehr der Fall ist.
Alle Variablen im Template die duch die Funktion aufgerufen werden werden nicht verarbeitet. bzw wird das Template erst garnicht eingesetzt.
Beispiel:
ich habe eine Hauptseite über eval" echo \$site=\"".templateparse("site")."\";"); aufgerufen.
inhalt des Templates Site ist eine Variable $body.
würde ich nun deine Funktion nehmen und aufrufen
template("body","body"); bleibt die variable $body leer.
ob das Template Body nun inhalt hatt oder nicht.
 
wieso machst du das mit echo() ? Hmm ich glaub Du hast den Sinn dieses Tuts wohl doch nicht ganz verstanden oder ?!

Gruß Mirko
 
function gettemplate($template,$endung="html")
{
return str_replace("\"","\\\"",implode("",file($template.".".$endung)));
}
function dooutput($template) {
echo $template;
}

Die Funktion dooutput macht nichts anderes. Also Tutorial Verstanden.
die erste seite also die Hauptseite wird so aufgerufen.
alle anderen ohne echo.
 
Zurück