Template Engine Smarty

dragon001

New Member
Lohnt sich eigentlich der Einsatz einer Template Engine?
Steh vor dieser Frage für eines meiner Projecte.
Sollte das erste Project sein, bei welchem dies eingesetzt wird.
Bisher wurden meine Script Designs immer per

$tmpl_file = "template.html";
$thefile = implode("", file($tmpl_file));
$thefile = addslashes($thefile);
$thefile = "\$r_file=\"".$thefile."\";";
eval($thefile);
print $r_file;

umgesetzt.
Wobei der Dynamische Inhalt immer in Variablen verpackt wird.
Dieser wird einfach eingefügt.
Jetzt meine Frage ob sich so etwas überhaupt lohnt.
Mein neues Project verwendet Frames.
Alle Frames werden nur von Index.php erzeugt.
Ich bin dahingehend noch unentschieden.
Hof ihr könnt mir helfen.
MFG
Dragon001
 
Eine Templateengine lohnt sich imho nicht. Warum?
Darum:

Smarty
Code:
...
User Information:<p>

Name: {$name}<br>
Address: {$address}<br>
...

Und in PHP

Code:
...
User Information:<p>

Name: <?=$name?><br>
Address:<?=$address?><br>
...


PHP war schon immer dafür ausgelegt in HTML eingebettet zu werden. ;)
 
Code:
<?=$address?>

Hmm diese Variate der Einbettung seh ich jetzt das erste mal.
mit Smarty habt ihr recht.
Meine Frage war, wann sich halt Smarty lohnt und wann eher nicht.
Smarty ist ja im Endeffekt ein ganz schönes Monster, wenn man die FS größe anschaut.
Ich weiß es wird nicht alles immer geladen.
Hat jedoch trotzdem ein gerade zu riesiges Memory Footage.
Man kann es zwar compacter halten mit eAccelerator bei zwei oder drei gleichzeitigen Usern.
Ich werds mir erst mal gemütlich anschschauen bevor ich mich endgültig dafür entscheiden werde.

Wie schauts eigentlich leistungsmäßig bei Smarty aus (Performance)?

MFg
dragon001
 
Ich werd mal in meinen alten PHP-Mags kucken, da war ein Test drinne...

... aber hey vergiss das mit den TE, das ist Crap.

PS.

<!--- Langform --->
<?php echo $foo ?>
<!--- Kurform --->
<?= $foo ?>

Das = steht für echo.

Es gibt auch kürzel für if, foreach und so. Check mal php.net
 
Nein ich werd die Tests mal raussuchen wenn du möchtest.

Was aber meiner Meinung nach Zeitverschwendung ist, weil TemplateEngines (TE) Crap sind..
 
Mein Seite djnews24.net benutzt die Smarty Engine und muss sagen doch sehr flott überzeuge dich selber...
 
Mir gehts eigentlich mehr um ein Panel für meine Kunden.
Bin mit dem vhcs2 nicht mehr zufrieden.
Möchte etwas, was sich
a in mein CMS besser integrieren läßt,
zum anderen möchte ich nichts das so kriechend Langsam die Seiten wie ConfixX aufbaut.

Ihr ich mich oder nutzt ConfixX nicht auch die Smarty TE?
Muß ich mal nachschauen, hatte da mal was in meinen Verzeichnissen gefunden.
Und vor allem, hatte Smarty Caching verwendet?
Das einzige was ich noch von ConfixX weiß ist, das es ewig für den Seitenaufbau gebraucht hat. Und ich hab auch schon von etlichen mags gehört das ConfixX in diesem bereich misslungen ist.

MFG
dragon
 
gesucht gefunden:
ConfixX verwendet Smarty.
Hmmm das stimmt mich jetzt nachdenklich.
Wie schauts eigentlich jetzt mit der Performance bei großen Homepages aus?
Gute ladezeiten oder ...?
 
Die Integration von Fremdscripten in ein bestehendes CMS hat weniger mit der Tempateengine zu tun. Vielmehr musst du schauen ob es eine API gibt, oder ob man Fremdscripte zumindest über ein IFrame einbinden kann.

Wegen dem Templatetest (aus PHPMag):

1. Phplib Integrated Template 100%
2 Phplib Template 115,58%
3. XTemplate 216,73%
4. Fasttemplate 237,08%


Hier noch ein ausführlicherer anderer Test:

http://wiki.essentialmind.com/NetArch/tools/templates


@society Man müsste mal einen Heavyload auf der Webseite simulieren um ein repräsentatives Ergebnis zu bekommen.

Aber als einzelner Besucher läuft es recht flott :p
 
Sandmann said:
Eine Templateengine lohnt sich imho nicht. Warum?
Darum:

Smarty
Code:
...
User Information:<p>

Name: {$name}<br>
Address: {$address}<br>
...

Und in PHP

Code:
...
User Information:<p>

Name: <?=$name?><br>
Address:<?=$address?><br>
...


PHP war schon immer dafür ausgelegt in HTML eingebettet zu werden. ;)


Du betrachtest das aus der falschen Richtung.
Siehs mal so, dass PHP Entwickler und Designer nicht die selbe Person sind.
Der Designer kann änderungen am HTML Code vornehmen, ohne dabei versehentlich das PHP Script zu zerstören oder überhaupt ändern zu müssen.
Ist also imho schon von Vorteil. Außerdem find ich die Trennung HTML / PHP sauberer... Bestes Beispiel phpbb
 
Das Heißt die Template Engine ist die Schnittstelle zwischen Programm und User.

Aber man hat die Qual der Wahl, was man verwendet.
Smarty ist halt recht kompliziert ist.
Vorteil ist jedoch die Erweiterbarkeit.

Was ich noch gern Wissen würde, ist es Möglich, das man Beispielsweise hergeht, und drei Verschiedene Templates auf einmal verwendet?

Beispiel, Haupt Design mit Bereich für das Menu auf der Linken Seite(und auf der Rechten Seite einen schmallen Rahmen für Hints und Hilfe sachen.).
Das ganze soll im großen und ganzen mit Frames realisiert werden.
Oder wäre es vielleicht gleich besser das ganze ohne Frames zu bauen und da wo Menu und die Hints hinkommen einfach Blocks setzen. Inhalt wird in eine eigene Variable gespeichert.

Desweiteren sollte man, nehm ich an, für jeden Screen ein eigenes Template haben oder? (Caching von Smarty)
 
Du betrachtest das aus der falschen Richtung.
Siehs mal so, dass PHP Entwickler und Designer nicht die selbe Person sind.
Der Designer kann änderungen am HTML Code vornehmen, ohne dabei versehentlich das PHP Script zu zerstören oder überhaupt ändern zu müssen.
Ist also imho schon von Vorteil. Außerdem find ich die Trennung HTML / PHP sauberer... Bestes Beispiel phpbb


Mir sind Designpattern ein Begriff. Für die Trennung von der Darstellung und dem Code brauch man keine Templateengine.

Übrigens fängt ein Designer mit Smartytags genausowenig was an wie mit embended Php. Warum? Weil der Designer designt, mit Photoshop, Gimp whatever und der Htmlfritze setzt dann das Layout in eine Webseit um. Und wenn der es nicht fertigbringt ein paar PHP Befehle zu lernen, soll er sich lieber einen anderen Job suchen.

Beispiel, Haupt Design mit Bereich für das Menu auf der Linken Seite(und auf der Rechten Seite einen schmallen Rahmen für Hints und Hilfe sachen.).
Das ganze soll im großen und ganzen mit Frames realisiert werden.
Oder wäre es vielleicht gleich besser das ganze ohne Frames zu bauen und da wo Menu und die Hints hinkommen einfach Blocks setzen. Inhalt wird in eine eigene Variable gespeichert.

Frames sind unnötig. Include oder require sind deine Freunde. Versehen mit eine paar PHP Statements für Variablen, eventuell eine paar Bedingungen und Schleifen ist das viel besser und schneller als irgendwelche Templateengines.
 
bisher hab ich in meinen Projekten eine "Art Template System" verwended.

In HTML Files werden einfach Variablen eingesetzt und diese Werden dann über

$tmpl_file = "template.html";
$thefile = implode("", file($tmpl_file));
$thefile = addslashes($thefile);
$thefile = "\$r_file=\"".$thefile."\";";
eval($thefile);
print $r_file;

in der Datei umgesetzt.
Verwendet wird dies im Header, Footer, Blocks (links, rechts, mitte Oben, mitte Unten).
Desweiteren gibt es 4 Boxen, die Inhalt aufnehemn können.
Nur eine Strickte Trennung von Code und HTML ist halt in dieser Lösung nicht wirklich möglich.
Daher meine Bedenken.

MFG
dragon001
 
Glaub mir benutz Smarty es ist sehr mächtig. Oder probiere es erstmal aus.. Ich mach nix mehr ohne..
 
Ich verwende für meine Seiten auch nur Smarty. Es vereinfacht das Programmieren enorm, wenn man den PHP-Code vom HTML getrennt hat. Außerdem kann Smarty Caching, somit kann man Seiten die sich selten ändern auch ohne Datenbank-Verbindung oder großartige verarbeitung servieren.

MfG
Reen
 
Smarty ist eine sehr verbreitete Engine und macht seine Dienste ordentlich.

Man kann auch andere Engines benutzen oder eigen stricken, aber warum das Rad neu erfinden ?

Shorttags in HTML sind wesentlich unübersichtlicher als TE-Tags. Wenn man im Team arbeitet, sind TE unerlässlich.

Jeder der alleine seine Scripts schreibt kann das eh handhaben wie er möchte.
Die Geschwindigkeit ist nicht das einzige Kriterium, spätestens bei Subloops fallen viele TE's durchs Raster.
 
ich probier einfach mal xTemplate aus dem Test aus.
Ist, so wie ich das jetzt überblicken konnte, das was ich "gesucht" hab.
Mit den in Sourceforge CVS enthaltenen Cache Routinen ist es sogar in der lage zu cachen.

Was mir an Smarty nicht so gefallen hat, ist die größe und komplexität.
Smarty mag zwar diverse Vorteile haben, aber die größe der Scripts ist auch ausschlaggebend.
 
Back
Top