Archivlink: javarea.de Forum > PHP, MySQL & CGI > Template Systeme
Vollständigen Link anzeigen: javarea.de Forum > PHP, MySQL & CGI > Template Systeme
Pages: [1]
2
... nächste »
... Letzte »
| geschrieben von mosi am 12.03.2008 - 11:50 |
Hallo javarea
hat wer Erfahrung mit Template Systemen und kann eines empfehlen? Ich wollte mich eigentlich mit phpTemple auseinandersetzen, welches ja auch im php5 Buch von Jörg Krause beiliegt - von daher hat sich das angeboten. Zumal er in seinem Buch sein System in den schönsten Farben malt. Jedoch habe ich bei der weiteren Internetrecherche den Eindruck bekommen, dass das ganze Projekt eingeschlafen, respektive tot ist - uncool. |
| geschrieben von Klaush am 13.03.2008 - 18:37 |
Ich kenne das TemplateSystem von Jörg Krause nicht.
Damals vor 40 Jahren hatte ich mal mit Smarty's gearbeitet. Smarty ist meines Wissens auch in der Lage einige Steuerbefehle wie If Then Else, sowie Schleifen im Template selbst zu verarbeiten. Seit geraumer Zeit benutze ich ein eigenes zusammengewürfeltes TemplateSystem alla "Template auslesen und in Array legen" Bei Bedarf dann auf das Array zurückgreifen um unnötig viele DB oder loadFile Abfragen zu umgehen. Eine 4 fache Templateverschachtelung ist möglich, leider kann ich keine Steuzerzeichen nutzen, was sicherlich sinnvoll ist, nur habe ich sie noch nicht so vermisst ....
|
| geschrieben von mosi am 16.03.2008 - 01:35 |
| ah, ich hab mich noch etwas umgeschaut und irgendwie hat mich das alles nicht umgehauen, bzw. war nicht das, was ich mir drunter vorgestellt hab. teilweise waren mir die meisten sachen einfach auch zu aufgeblasen. bis ich mich da in meiner freizeit reingearbeitet habe, is das jahr zuende. ich denke für private zwecke bin ich ohne templates und halbwegs sinniger programmierung besser drann. ich werds jetzt einfach ein wenig pseudo cms artig machen, das wird reichen. |
| geschrieben von okley am 16.03.2008 - 11:19 |
Geht mir genau so mit den Template Systemen. Die waren meist zu aufgeblasen für das wo ich sie einsetzen wollte. Hab mir darum vollgende Funktion geschrieben:
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
<?
function get_template($template,$keywords,$values){
$root = "/site";
$dir=$root."/templates/";
$fh=fopen($dir.$template.".txt","r");
if ($fh){
while ($line = fgets($fh)){
$inhalt .= $line;
}
//{$var} durch den Wert von $var ersetzen
for($i=0; $i<sizeof($keywords); $i++){
$inhalt = str_replace("{".$keywords[$i]."}",$values[$i],$inhalt);
}
return $inhalt;
}else{
return False;}
}
?>
|
Mit dieser Funktion werden die Inhalte der Textdatei nach keywords abgesucht und der dazugehörige Wert aus Values ersetzt das keyword dann.
Beispiel Datei: Hallo Benutzer {username}. ==> echo get_template("begruessung.txt", array("username"), array("User1"));
Für Templates die Schlaufen unterstützen sollen verwende ich jeweils den DataProducer:
http://www.sloppycode.net/code-snip....class.aspx
|
| geschrieben von Martin am 26.03.2008 - 09:20 |
Hallo
zum Thema Smarty: http://smarty.php.net Das ist die offizielle Seite der Smarty - template- engine. Meines Erachtens eine der besseren engine - bietet aber schon Funktionalitäten die über eine reine Template- engine hinaus gehen. (Klaus hat dazu schon was geschrieben)
mfg martin |
| geschrieben von JDEmp am 01.04.2008 - 16:36 |
Wie passend! – Nach so einem Thema suche ich in prinzip gerade.
Nachdem ich nun Jahrelang mein eigenes Pseudo-Templatesystem verwendet habe bin ich nun an einem Punkt angelangt, an dem das System einfach ausgereitzt und überholt ist.
Zur kurzen Erläuterung: Früher habe ich meine Seite immer durch einen Header, dem Inhalt und einem Footer zusammengesetzt und durch penibel sau geschriebenen Code immer meine Header via PHP verschicken können. Aber ab dem Zeitpunkt als ich in dieses System einen internen Bereich, also einen Adminbereich, integrieren wollte war es vorbei. So sauber der Code auch war. Denn es musste im Adminbereich immer zuvor eine Session gestartet werden um zu überprüfen ob der User auch die entsprechenden Rechte hat wodurch der Header zwangsläufig immer schon gesendet wurde. Faul wie ich früher war hab ich das Problem einfach umgangen durch ob_start().
Nun bin ich aber an einem Punkt angelangt wo ich mir das nicht mehr erlauben kann und auch nicht mehr will! Daher muss ich den Code wohl oder übel komplett vom Design trennen. Und bin letztendlich bei dem gelandet was okley hier gerade geschrieben hat. Wie er und andere schon schrieben waren andere Systeme wie Smarty's einfach zu aufgeblasen. Ich bevorzugte es klein anzufangen und dieses System genauso wie mein altes nach und nach zu verfeinern, zu optimieren. Nicht nur die Tatsache, das Gefühl zu haben etwas eigenes programmiert zu haben (Es ist schlicht weg meins! Meine arbeit. Ich sehe sozusagen immer das Ergebniss meiner Arbeit), sondern auch die möglichkeit es von Anfang an durchzudokumentieren (Wodurch mir auch das spätere wiedereinsteigen in mein eigenenes System stark vereinfacht wird) und sich entsprechend gut damit auszukennen (Man weiß genau in welchem Stil der Code geschrieben ist – Jeder hat schließlich seine eigene Syntax, ob ich nun Tabbe oder nur zwei Leerzeichen setzte. Wie ich die Gescheiften Klammern setzt usw. Auch weiß ich was für Befehle ich verwendet habe und wie diese funktionieren) spricht für mich stark für ein eigenes Templatesystem.
Nun habe ich im Internet dieses System gefunden. Es ist in PHP5 geschrieben würde sich aber leicht durch kleine änderungen in PHP4 umschreiben. Es ist Objekt Orientiert und obendrein noch durchdokumentiert!
Was mich daran aber stört, und das trifft auch auf Okleys System zu, ist, dass ich für jede Seite ein eigenes Template bzw. ein Teil-Template erstellen muss. Denn eine Newsseite brauch sicher ein anderes Template als zum Beispiel eine ganz normal Seite.
Nun stelle ich mir die Frage ob ich nich einfach einen Denkfehler gemacht habe. Oder gibt es vieleicht noch einen Mittelweg, einen Kompromiss? Vieleicht sogar noch eine Alternative? |
| geschrieben von zippy am 01.04.2008 - 22:53 |
Dsas klingt jetzt sicher großgoschert: Mein altes Templatezeugs von 2003-2004 rennt zu meiner Überraschung auch auf PHP5 und hat Inhalt und Design (fast) völlig getrennt. Es ist sogar ein bisserl objektorientiert, obwohl ich nicht weiß, was das heißt.
|
| geschrieben von okley am 01.04.2008 - 22:59 |
Hallo JDEmp
| Zitat | | | Was mich daran aber stört, und das trifft auch auf Okleys System zu, ist, dass ich für jede Seite ein eigenes Template bzw. ein Teil-Template erstellen muss. |
Ich denke der Sinn eines Template Systems ist es doch gerade für die verschiedenen Seiten (oder Seiten Typen) ein template zu erstellen. Das Template kannst du dann auf die verschiedenen Inhalte aus einer Datenbank anwenden um deine Ausgabe zu erstellen.
Im Prinzip könntest du auch einfach XSL als Template System benützen. Die Daten würden dann in Form von XML vorliegen. Du hast dann einfach ein "Mastertemplate" und eine Klasse die dir Anhand von Bedingungen das XML zusammenstellt und schliesslich mit xsl Transformiert.
Also wenn du zum Beispiel als URL Parameter newsId bekommst dann weiss deine Klasse, dass es das Newstemplate (XSL) laden muss und die Daten des Newsartikels mit der entsprechenden newsId aus der Datenbank lesen muss und in XML zur Verfügung stellen. |
| geschrieben von zippy am 01.04.2008 - 23:57 |
| Zitat | | | Original geschrieben von okley am 01.04.2008 - 22:59
Hallo JDEmp
| Zitat | | | Was mich daran aber stört, und das trifft auch auf Okleys System zu, ist, dass ich für jede Seite ein eigenes Template bzw. ein Teil-Template erstellen muss. |
Ich denke der Sinn eines Template Systems ist es doch gerade für die verschiedenen Seiten (oder Seiten Typen) ein template zu erstellen. Das Template kannst du dann auf die verschiedenen Inhalte aus einer Datenbank anwenden um deine Ausgabe zu erstellen.
Im Prinzip könntest du auch einfach XSL als Template System benützen. Die Daten würden dann in Form von XML vorliegen. Du hast dann einfach ein "Mastertemplate" und eine Klasse die dir Anhand von Bedingungen das XML zusammenstellt und schliesslich mit xsl Transformiert.
Also wenn du zum Beispiel als URL Parameter newsId bekommst dann weiss deine Klasse, dass es das Newstemplate (XSL) laden muss und die Daten des Newsartikels mit der entsprechenden newsId aus der Datenbank lesen muss und in XML zur Verfügung stellen. |
Also ich hab damals keine "Seite" angezielt, sondern ganz bewusst ein Phishing-Management-System entworfen. Schlecht, aber brauchbar.
|
| geschrieben von okley am 02.04.2008 - 11:56 |
| zippy wie meinst du das? Was ist ein phishing management system? |
| geschrieben von zippy am 05.04.2008 - 02:31 |
| Zitat | | | Original geschrieben von okley am 02.04.2008 - 11:56
zippy wie meinst du das? Was ist ein phishing management system? |
ein cms, das beliebige html-seiten als templates importiert.
|
| geschrieben von JDEmp am 05.04.2008 - 15:01 |
| Und wo ist da der unterschied zu dem was ich geschrieben hab? Ich meine ich könnte auch jede HTML-Seiteimportieren nur würde das nicht immer zu dem führen was ich eigentlich erreichen möchte. Es macht ja durchaus sinn ein MainTemplate und mehere Teil-Templates zu verwenden. |
| geschrieben von zippy am 05.04.2008 - 23:29 |
| Zitat | | | Original geschrieben von JDEmp am 05.04.2008 - 15:01
Und wo ist da der unterschied zu dem was ich geschrieben hab? Ich meine ich könnte auch jede HTML-Seiteimportieren nur würde das nicht immer zu dem führen was ich eigentlich erreichen möchte. Es macht ja durchaus sinn ein MainTemplate und mehere Teil-Templates zu verwenden. |
Was meinst du mit Maintemplate und Teiltemplates? Aber prinzipiell seh ich auch keinen Unterschied zu deiner Darstellung.
|
| geschrieben von JDEmp am 07.04.2008 - 15:18 |
Naja.., man die Seiten ja auf zwei verschiedene arten konstruieren. Zum einen in dem ich jede mögliche Seite bereits fertig habe. Und entsprechend nur dieses eine Template lade – Statisch. Oder aber ich setzte mir mein Templte stück für stück zusammen, je nach dem was für eine Seite ich habe – Dynamisch.
Im allgemeinen meinte ich aber mit Maintemplate ein Hauptdesign, dass die Seiten in groben bereits beschreibt. Also Header, Menu und Footer, denn diese bleiben meistens gleich. Mit Teiltemplates hingegen kann ich den Content, also den eigentlichen Inhalt der Seite, weiter beschreiben. |
| geschrieben von zippy am 07.04.2008 - 19:16 |
| Zitat | | | Original geschrieben von JDEmp am 07.04.2008 - 15:18
Naja.., man die Seiten ja auf zwei verschiedene arten konstruieren. Zum einen in dem ich jede mögliche Seite bereits fertig habe. Und entsprechend nur dieses eine Template lade – Statisch. Oder aber ich setzte mir mein Templte stück für stück zusammen, je nach dem was für eine Seite ich habe – Dynamisch.
Im allgemeinen meinte ich aber mit Maintemplate ein Hauptdesign, dass die Seiten in groben bereits beschreibt. Also Header, Menu und Footer, denn diese bleiben meistens gleich. Mit Teiltemplates hingegen kann ich den Content, also den eigentlichen Inhalt der Seite, weiter beschreiben. |
Und in welcher Form liegen die Templates am Server? Ich schreib sie in die Datenbank. Hier ein Beispiel, wo ich leider in der Zwischenzeit die Bilder rausgenommen habe. Von vor ein paar Jahren:
http://littlemonsters.li.funpic.de/....hp?tdid=14
|
|