Splinter
Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Splinter » Comasu MORPG » Programmierung » Template-Enginge "Smarty" » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Template-Enginge "Smarty"
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
MoG MoG ist männlich
Administrator


images/avatars/avatar-62.gif

Dabei seit: 06.10.2005
Beiträge: 425
Herkunft: Fischbach (Kr. Kaiserslautern)

Template-Enginge "Smarty" Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo

Wie schon angekündigt ist hier der Thread zu Smarty.
Diese Template-Enginge funktioniert ähnlich wie die Funktionen unserer Forensoftware hier. Der Unterschied ist das bessere (sinnvollere) cachen der Templates.

Warum überhaupt Templates? Nun, ich will einfach eine klare Trennung zwischen Verarbeitung und Ausgabe, zwischen den Programmierern und den Designern. Veränderungen im Quellcode sollen sich nicht auf das Design auswirken und umgekehrt.

Die Syntax ist ein wenig gewöhnungsbedürftig, ich wills mal kurz machen.

1) Einbinden der Enginge

2) Syntax innerhalb des Templates und der PHP-Datei

3) Weiterführende Links

####################

zu 1)


In jeder PHP-Datei, die nachher ein Template ausgeben soll, muss folgendes an den Anfang:

php:
1:
2:
3:
4:
5:
6:
<?php
require 'acp/libs/Smarty.class.php';
$smarty = new Smarty;
$smarty->compile_check true;
$smarty->debugging false;
?>

Erklärung

über Smarty.class.php greifen wir auf die Methoden der Klasse Smarty zurück, die wir erzeugt haben. Ohne diesen Schritt wird die Enginge nicht aktiviert und wir könnten keine Templates ausgeben.

Zu compile_check muss ich ein wenig mehr erzählen: Diese Engine ist in der Lage, Änderungen in Templates festzustellen. Sie vergleicht das aktuelle Template mit einem Abbild. Wenn eine Änderung vorliegt, wird das Template neu kompiliert.

Folge: Wenn wir mit dem Design komplett fertig WÄREN, WÜRDEN wir oben den Wert von compile_check auf 'flase' setzen, damit uns das Kompilieren erspart bleibt und die Performance steigt.
ACHTUNG: Während der Entwicklung MUSS dieser Wert immer auf TRUE stehen, da ansonsten Neuerungen in Templates nicht erkannt werden und somit verborgen bleiben!

$smarty->debugging ist eher eine Spielerei, die ihc standardmäßig ausschalte. Wenn es aktiviert wird, wird dem Template ein Popup über JS angehängt, in dem wir Infos erhalten über Anzahl Variablen, Arrays, deren Felder, Ladezeit, Ausgabezeit, etc.

Den oben beschriebenen "kopf" habe ich in der Datei a_tpl.php abgelegt, so brauchen wir nurnoch diese Datei via "include" miteinzubeziehen.
Sollte das Infopopup erwünscht sein, einfach "$smarty->debugging = true;" nach der include-Anweisung anhängen Augenzwinkern



zu 2)

Etwas verwirrend mag die Definition von Variablen sein. Bisher war man es gewohnt, einfach in der PHP-Datei folgendes zu schreiben:
php:
1:
2:
3:
<?php
$test "sahne";
?>

Klar, das ist auch jetzt noch möglich, aber in dem Template kann man diese variable nicht einfach über $test abfragen, da sie in dem Template nicht existiert ^^
Warum? Weil sie nicht in die Enginge geladen wurde...

ALLES, was außerhalb der PHP-Datei verwendet werden soll, also in dem Template, muss über folgende Methode geschehen:
php:
1:
2:
3:
<?php
$smarty->assign();
?>


Nun gibt es für verschiedene Fälle verschiedene Schreibweisen. Um das Sahne-Beispiel aufzugreifen würde es dann wie folgt aussehen:
php:
1:
2:
3:
<?php
$smarty->assign('test''sahne');
?>

Nun existiert in dem Template die Variable $test mit dem Wert "sahne".
Alternativ könnte die Variable $test in der PHP-Datei deklariert worden sein und wir wollen diese ausgeben:
php:
1:
2:
3:
<?php
$smarty->assign('test'$test);
?>

geht auch großes Grinsen


Ausgabe der Variablen im Template:

Die Ausgabe ist einfach, man muss nur auf die geschweiften Klammern um die Variablen achten, also {$test}

Nehmen wir an, wir machen eine einfache Datenbank-Abfrage... Unsere Variable enthält folglich ein Array. Die Ausgabe eines Arrays ist einfach.
{$test.feldname}



zu 3)

Deutsches Handbuch zu smarty

Ausgabe von Variablen in den Templates

Variablen in einer PHP-Datei (auch Arrays)




Alles in allem ist es gewöhnungsbedürftig, aber es ist irgendwo machbar. Die umständliche Übergabe von Variablen an das Template zwingt einen fast dazu, wenig an Variablen zu übergeben, der Faulheit wegen. Ist ja nich unbedingt falsch Augenzwinkern
Zudem sieht man durch die "->" recht schnell, wo Informationen an das Template übergeben wurden.


Fragen zur Enginge bitte in diesen Thread!


mfg mog

__________________

Sonntag, 25.März 2007 17:02 MoG ist offline E-Mail an MoG senden Homepage von MoG Beiträge suchen auf Freundesliste Fügen Sie MoG in Ihre Kontaktliste ein MSN Passport-Profil von MoG anzeigen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Splinter » Comasu MORPG » Programmierung » Template-Enginge "Smarty"

Ähnliche Themen
Thread Forum Gestartet Letzte Antwort
Erste Eindrücke mit Smarty Ankündigungen   26.03.2007 13:58 von MoG     26.03.2007 13:58 von MoG  


Forensoftware: Burning Board 2, entwickelt von WoltLab GmbH