[PHP][Tutorial] Template Engine

  • Heyho Leute,


    Ich zeige euch nun mal wie ihr euren PHP Code & HTML trennt damit man bei größeren Projekte z.B nicht durcheinander kommt und auch sonst sieht es sauberer aus. ;)
    Die Bibliothek die ich benutze nennt sich Smarty. Ich arbeite nur noch damit weil ich wirklich beeindruckt bin was diese Bibliothek alles für Vorteile hat. Ich gebe euch nun mal einen kleinen Einblick in die kleine aber feine Welt. :P


    Was benötigen wir?
    Smarty 2.6.26 Stable
    Editor


    Schritt 1
    Wir legen den Ordner "smarty" in unserem Projektordner an.
    Ihr entpackt aus der Smarty.zip nur alles aus den Ordner "libs" in den zuvor angeleten
    Order "smarty"
    Wir legen nun einen Ordner "templates" und "cache" an. Mehr dazu in Schritt 3.
    Schritt 2
    Wir basteln uns einen einfachen PHP Code
    [PHP]
    <?php
    $name = "r00t";
    if(isset($name) == "r00t")
    {
    echo "Hi wie gehts, r00t?";
    }
    else
    {
    echo "Du bist nicht r00t";
    }
    ?>
    [/PHP]
    Das wäre jetzt ein wirklich simpler PHP Code.


    Schritt 3
    Jetzt kommt Smarty ins Spiel. Wir basteln uns nun sozusagen eine header.php
    damit wir nicht immer alles neu hineinschreiben müssen. ;)
    [PHP]
    <?php
    # Smarty Klasse Inludieren
    require_once ('smarty/Smarty.class.php');
    $smarty = new Smarty();
    # Smarty Template Info
    $smarty->template_dir = 'templates'; # Dort werden unsere Templates reinkommen
    $smarty->compile_dir = 'cache'; # Dort werden die Templates gecachet
    ?>
    [/PHP]


    Schritt 4
    Jetz includieren wir unsere Header.php und legen unsere ersten Smarty Variablen an.
    [PHP]
    <?php
    require('header.php');
    # Smarty Information
    $smarty->assign('content','content.tpl'); # Neue .tpl Datei im Ordner /templates/
    $smarty->assign('title','Testittle'); # In der index.tpl <title>{$title}</title> nutzen
    $name = "r00t";
    if(isset($name) == "r00t")
    {
    echo "Hi wie gehts, r00t?";
    }
    else
    {
    echo "Du bist nicht r00t";
    }
    $smarty->display('index.tpl'); # Definiert das Grundtemplate
    ?> [/PHP]

    Erläuterungen

    $smarty->display('index.tpl'); - Definiert das Haupttemplate
    $smarty->assign('title','Testittle'); - Definiert den Websitetitel
    $smarty->assign('content','content.tpl'); - Dort ist unser Content


    Schritt 5
    Wenn wir jetzt unser Script ausführen müsste folgende Fehlermeldung erscheinen;
    Warning: Smarty error: unable to read resource: "index.tpl" in C:\xampp\htdocs\beispiel\smarty\Smarty.class.php on line 1093
    Das liegt daran das noch keine "index.tpl" vorhanden ist, weiter gehts im nächsten Schritt. ;)


    Schritt 6
    Nun kommen wir zu den Templates. Wir legen eine "index.tpl"und eine "content.tpl" an.
    In die "index.tpl" kommt nun folgendes ( Beispiel HTML Code ).

    HTML
    <html>
    <head>
    <title>{$title}</title>
    </head>
    <body>
    {include file=$content}
    </body>
    </html>


    Erläuterungen
    {$title} - Damit wird der Seitentitel definiert, siehe Schritt 4.
    {include file=$content}
    Damit wird die "content.tpl" eingebunden. Siehe Schritt 4 für die Definierung.


    Schritt 7
    Nun kommen wir zur "content.tpl".
    In diese kommt jeglicher Content rein in unserem Beispiel steht in der "content.tpl"
    nur folgendes:

    Code
    <p>Copyright content.tpl (c)2010</p>


    Damit wären wir mit der Content.tpl fertig. Wenn ihr nun das Script ausführt würdet ihr euer normalen PHP Ausgaben haben + Smarty als Template Enginge.


    Beispiel Download
    Beispiel Download


    Schlusswort
    Ich hoffe ich konnte euch einen kleinen Einblick in die Welt von Smarty gewähren bei Fragen schreibt mir einfach eine PN hier im Forum.



    Peace, Binär :D