WinFuture-Forum.de: Template? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Template? kann mir das mal jemand erklären?


#1 Mitglied ist offline   DerXero 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.151
  • Beigetreten: 01. Oktober 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Kiel
  • Interessen:Netzwerke, Linux

geschrieben 26. September 2005 - 15:26

Moin,

also ich hab jetzt mal angefangen PHP zulernen und langsam kann mir keiner mehr so weiterhelfen (vielleicht wollen sie auch nicht mehr :veryangry: ).
Ich habe auf xhtml ein Template erstellt, in welches ich jetzt natürlich Text "einfügen" will.
Also habe ich jetzt schon einige Zeit damit verbracht verschiedene Sachen zu lesen und besonders zu suchen.
Mit welchem Code macht man soetwas? Ohne Smartie und eigene Engine's?
Kann mir da mal jemand bei Helfen?

Mein Template findet ihr hier: Klick

Tausend Dank schonmal :imao:
HP Touchsmart TM2 2010eg - Intel i7-430UM - 4GB Ram - Intel X25-M 80GB SSD - Windows 7 Professional
Workstation: Intel E8400 - 4GB Ram - MSI P45 Board - Windows 7 Professional
Storage-Server: 3ware 9650SE 8LPML - 5x WD GP 1,5TB Raid5 - Ubuntu
0

Anzeige



#2 Mitglied ist offline   Ich 

  • Gruppe: aktive Mitglieder
  • Beiträge: 284
  • Beigetreten: 11. März 02
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 26. September 2005 - 21:57

Also... ein Template ohne eine richtige Template Engine ist vielleicht nicht so ganz im Sinne des Erfinders, aber im Prinzip funktioniert ein Template ganz easy

Du ließt dir dein Template einmal in einen String ein....

$tpl = file_get_contents('datei.tpl');


Dann nimmst du dir deinen String und ersetzt einfach die Platzhalter

$what = array("{inhalt}", "{menu}", "{footer}");
$replacement  = array($inhaltHtml, $menuHtml, $footerHtml);

$filledTpl = str_replace($what, $replacement, $tpl);

echo $filledTpl;


Das ist imho die schnellste Art Inhalte in ein Standardtemplate zu drücken, allerdings mußt du auf diese Art und Weise auf so schicke Sachen wie Blöcke verzichten.... Warum also nicht Smarty verwenden... ich finds echt einfach zu Handhaben und es gibt jede Menge Beispiele... Und wenn man mit PEAR vertraut ist, was in PHP Kreisen nie schlecht ist sollte man sich vielleicht Flexy anschauen, was in meinen Augen sogar besser ist als Smarty...

Du kannst es natürlich ohne Template engine machen, aber glücklich wirst du damit nicht werden, vor allem wenn es flexibler werden soll.

MFG

Ich
Fatal error: Call to undefined function: brain() in head.php on line 2
0

#3 Mitglied ist offline   DerXero 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.151
  • Beigetreten: 01. Oktober 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Kiel
  • Interessen:Netzwerke, Linux

geschrieben 27. September 2005 - 16:18

Danke schonmal dafür, hab mir das heute morgen nur kurz mal angeschaut und werd mich nachher mal dran setzen einen ähnlichen Vorschlag hatte ich gestern dann doch nochmal bekommen.
Aber mal ne Frage: wie soll ich Smarty einsetzen, wenn das auf dem Server nicht installiert ist? :D

Kennt jemand sonst noch Tempate Engines? Ich hab eine gefunden, aber da funktioniert nicht mal das Beispiel ohne fehler :imao:
HP Touchsmart TM2 2010eg - Intel i7-430UM - 4GB Ram - Intel X25-M 80GB SSD - Windows 7 Professional
Workstation: Intel E8400 - 4GB Ram - MSI P45 Board - Windows 7 Professional
Storage-Server: 3ware 9650SE 8LPML - 5x WD GP 1,5TB Raid5 - Ubuntu
0

#4 Mitglied ist offline   hasch 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.790
  • Beigetreten: 28. Januar 04
  • Reputation: 0
  • Wohnort:Localhost
  • Interessen:Ach so viele ...

geschrieben 27. September 2005 - 18:32

Mich würde auch mal interessieren, wie denn eine Template-Engine aufgebaut ist, macht die das selbe wie dein Code? (Meine von der Geschwindigkeit) oder gibt es da noch andere Möglichkeiten das zu realisieren?
0

#5 Mitglied ist offline   Ich 

  • Gruppe: aktive Mitglieder
  • Beiträge: 284
  • Beigetreten: 11. März 02
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 27. September 2005 - 22:28

Im Endeffekt machen Template Sprachen genau das was ich oben geschrieben habe, nur eben noch viel mehr...

Mit Smarty zum Beispiel kann man sich ein Template schnappen und ihm dann ein Array voller Variablen übergeben. Dieses Array kann man dann im Template beliebig oft auswerten mit eigenen foreach Anweisungen, if Anweisungen etc. pp. Smarty kann da ne ganze Menge.

Die Smarty Installation ist eigentlich ziemlich einfach, da Smarty ja selber in PHP geschrieben ist... Smarty downloaden, auspacken, auf den Server legen und benutzen... man muß in der Config nur Pfade anpassen.

Flexy von dem ich weiter oben noch sprach bietet zwei kleine Vorteile die vielleicht nicht uninteressant sind.

Während man in einem Smarty Template den Smarty code ins Template zwischen die HTML Befehle schreibt:

<table>
  {foreach name=articleloop item=article from=$articles}
  <tr>
	  <td>{$article.ArtNr}<img src=....></td>
   </tr>
  {/foreach}
</table>


parst Flexy mittels eines Tokenizers die HTML Tags und benutzt sie entsprechend zur Erstellung von Code Blöcken.

<table>
  <tr flexy:foreach="a,k,v">
	<td>k is {k}, and v is {v}</td>
  </tr>
</table>


Das ist nicht nur schlanker, sonder bewirkt auch, dass man mit einem Wysiwyg seine Templates bearbeiten kann, ohne dass Steueranweisungen das Design zerlegen...

Die Flexy Installation ist allerdings auf einem Server auf dem man keinen Zugriff auf die Commandline hat nicht ganz so schön einfach... Man muß sich PEAR runterladen und auf den Server schmeißen und dann alle Packete die mit Flexy in Abhängigkeit stehen mit in das Pear Verzeichniss packen... Wenn man Zugriff auf eine Commandline hat dann geht das alles auch über

pear install -a html_template_flexy


Das kann man zum Beispiel machen wenn man irgendwoo den Zugriff auf einen Linux Server hat auf dem PHP als executeable drauf ist... dann dürfte da auch pear drauf sein...

Um PEAR, wenn man es schonmal hat auch benutzen zu können muß man dann entweder den include_path in der php.ini so setzen, dass das PEAR Verzeichniss mit in den globalen icludes ist, oder man benutzt die Funktion
<?
ini_set('include_path','/var/www/localhost/PEAR/');
require_once('HTML/Template/Flexy.php');
?>



Was die Geschwindigkeit einer Template engine angeht kommt das stark auf die Engine an. Es gibt Engines die bei jedem Aufruf das Template komplett neu Parsen und Inhalte einfach nur dumpf ersetzen, wie mein obiges Beispiel. Flexy und Smarty machen das anders... da wird das Template beim ersten Aufruf "kompiliert" und es entsteht ein recht unlesbares Gewirr aus HTML und PHP, was irgendwo in einem cache directory rumfliegt... Das ist schneller als eine Template Engine, die immer alles durchparsen muß, aber immernoch langsamer, als wenn man eine optimierte PHP Codewurst mit integriertem HTML ohne includes baut... Aber wenn man nicht grade 10000 Besucher pro Stunde auf seiner Page hat, dann kann man Flexy oder Smarty ohne Bedenken einsetzen ;D

So far

Ich
Fatal error: Call to undefined function: brain() in head.php on line 2
0

#6 Mitglied ist offline   DerXero 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.151
  • Beigetreten: 01. Oktober 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Kiel
  • Interessen:Netzwerke, Linux

geschrieben 28. September 2005 - 06:14

morgen :)

Ich, das war schon mal sehr informative, leider habe ich keinen Shell Zugang zu dem Server, könnte allerhöchstens meinen Kumpel mal Fragen ob er das rauf schmeißt ;D

Sonst noch Ideen? :)
HP Touchsmart TM2 2010eg - Intel i7-430UM - 4GB Ram - Intel X25-M 80GB SSD - Windows 7 Professional
Workstation: Intel E8400 - 4GB Ram - MSI P45 Board - Windows 7 Professional
Storage-Server: 3ware 9650SE 8LPML - 5x WD GP 1,5TB Raid5 - Ubuntu
0

#7 Mitglied ist offline   Ich 

  • Gruppe: aktive Mitglieder
  • Beiträge: 284
  • Beigetreten: 11. März 02
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 28. September 2005 - 21:22

Geht alles auch ohne shell, ist nur halt nicht so elegant, weil man sich die Packete selber runterladen muß und dann alles manuell wieder auf den Server spielen darf...

Ansonsten schau dir Smarty an, das ist nur ein Packet, lässt sich einfach in dein Webroot schmeißen und benutzen. Andere Engines kann ich leider jetzt nicht so bewerten... Es gibt da noch PatTemplate, aber das habe ich bisher noch nicht testen können.

So far

Ich
Fatal error: Call to undefined function: brain() in head.php on line 2
0

#8 Mitglied ist offline   DerXero 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.151
  • Beigetreten: 01. Oktober 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Kiel
  • Interessen:Netzwerke, Linux

geschrieben 29. September 2005 - 07:52

ok, nach dem ich gestern meinem Webmaster gefragt habe ist die Sache für mich klar... Ich setz mich dann mal mit der Smarty Doku hin, hab ab morgen erstmal 2 Wochen Ferien... ;D

Smarty läuft also doch bei ihm :cheers:

Danke nochmal...
HP Touchsmart TM2 2010eg - Intel i7-430UM - 4GB Ram - Intel X25-M 80GB SSD - Windows 7 Professional
Workstation: Intel E8400 - 4GB Ram - MSI P45 Board - Windows 7 Professional
Storage-Server: 3ware 9650SE 8LPML - 5x WD GP 1,5TB Raid5 - Ubuntu
0

#9 Mitglied ist offline   Yalamand 

  • Gruppe: aktive Mitglieder
  • Beiträge: 101
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 29. September 2005 - 13:54

Beitrag anzeigenZitat (Ich: 27.09.2005, 23:28)

Was die Geschwindigkeit einer Template engine angeht kommt das stark auf die Engine an. Es gibt Engines die bei jedem Aufruf das Template komplett neu Parsen und Inhalte einfach nur dumpf ersetzen, wie mein obiges Beispiel. Flexy und Smarty machen das anders... da wird das Template beim ersten Aufruf "kompiliert" und es entsteht ein recht unlesbares Gewirr aus HTML und PHP, was irgendwo in einem cache directory rumfliegt... Das ist schneller als eine Template Engine, die immer alles durchparsen muß, aber immernoch langsamer, als wenn man eine optimierte PHP Codewurst mit integriertem HTML ohne includes baut... Aber wenn man nicht grade 10000 Besucher pro Stunde auf seiner Page hat, dann kann man Flexy oder Smarty ohne Bedenken einsetzen


Leider ist es etwas Trivial ja... bei "dicken" Template-Engines wie z.B. smarty kommt irgendwann der Zeitpunkt an dem die Waagschale umkippt. Wir mussten es testen, da bei einem Projekt Probleme auftraten bei dem es im Live-Betrieb über 8000 Aufrufe pro Minute gab. So verbrauchte Smarty mit seinen dutzenden Dateien und Klassen über 0.3 sec allein nur dafür die includes zu laden. Das Initialisieren der Klasse ~0.1 sec. Das Laden & Init der Datenbankklasse gut 0.3 sec. Wenn man das Alles zusammenzählt bricht das Template-System und selbst das Caching zusammen, denn dieses kommt ja erst nach dem laden aller Klassen und dem Init.

Ansonsten ist es nur zu empfehlen, da man schön den Code vom Layout trennen und seine eigenen Module ohne Probleme hinzubauen kann.

Dieser Beitrag wurde von Yalamand bearbeitet: 29. September 2005 - 13:55

0

#10 Mitglied ist offline   DerXero 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.151
  • Beigetreten: 01. Oktober 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Kiel
  • Interessen:Netzwerke, Linux

geschrieben 29. September 2005 - 16:32

Beitrag anzeigenZitat (Yalamand: 29.09.2005, 14:54)

Wir mussten es testen, da bei einem Projekt Probleme auftraten bei dem es im Live-Betrieb über 8000 Aufrufe pro Minute gab.


Ok, ich glaube jetzt mal nicht, dass ich je soviele User bekommen werde ;D
Aber schonmal gut zu wissen
HP Touchsmart TM2 2010eg - Intel i7-430UM - 4GB Ram - Intel X25-M 80GB SSD - Windows 7 Professional
Workstation: Intel E8400 - 4GB Ram - MSI P45 Board - Windows 7 Professional
Storage-Server: 3ware 9650SE 8LPML - 5x WD GP 1,5TB Raid5 - Ubuntu
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0