Template-Engine

Wo liegt eigentlich dein Problem mit Smarty?

Im Prinzip lässt Smarty sich ganz einfach handhaben und liefert eigentlich alles, was man braucht um Templates zu verarbeiten.
 
Weil ich mit Smarty nicht klar komme und es mir zu komplex ist

Erm, was ist den das für ne Antwort? Die Grundfunktionen von Smarty sind absichtlich einfach gehalten, damit sie auch jeder (mit bisschen PHP-Fähigkeiten) versteht.
Falls Du Smarty zu komplex findest, solltest Du dich vielleich noch nicht an ein Templatesystem wagen, sondern an deinen PHP-Fähigkeiten arbeiten.

Die Anmerkung, dass Du mit dieser Haltung nicht weit kommst, muss leider auch noch sein. :google:
 
Versteh mich nicht falsch aber irgendwie versteht ihr meine Frage nicht oder?

Ich frag nach einer Template-Engine die es mir ermöglicht per eval() Templates in php aufzurufen und im HTML dukos mit $vars arbeiten kann, mehr such ich immo nicht!

Und da brauch ich auch kein Smarty... zumal ich nicht gesagt habe das ich mit Smarty nicht klar kommen würde aber es entspricht nicht meinen Vorstellungen!

Überall wo ich schon angefragt habe kommen diese antworten mit Smarty...
Wer Smarty nehmen will soll es mir ist es für meine Sache zu komplex und daher such ich ein einfaches TuT wo ich mein eigenes Template-Engine bau kann!

Ich finde es ja schön das man mit vorgefertigten Template-Engine arbeiten sollte aber da ich mich auch auf diese Art und weise Fortschreiten will wäre es vom Vorteil so etwas auch mal zu können!

Ich hoffe nun hat sich die Frage mit Smarty geklärt... ;) :)
 
Naja, ich weiß zwar immer noch nicht genau was du genau willst. Ich lese zwar an allen Ecken und Enden Template, Cache und Datenbank und eval(), aber meiner Meinung nach wurde bereits soweit alles beantwortet. Ich bin jetzt einfach mal nen Schritt zurück gegangen und dann müsstest du genau das hier machen:

Inhalt der Datei template.php
PHP:
    /* Einzige Voraussetzungen für das Script:
    * 1. Datei mit Template heißt template.tpl und liegt im gleichen Verzeichnis wie das Script
    * 2. Es besteht eine offene Verbindung zu einer Datenbank, die die Tabelle tpl_contents enthält
    * 2.1 Felder der Tabelle: content_id, content_title, content_text, content_datetime
    */

    // Daten aus Datenbank auslesen
    $query = "SELECT
                content_id,
                content_title,
                content_text,
                DATE_FORMAT( content_datetime , '%d.%m.%Y, %H:%i:%s' ) AS content_datetime
            FROM
                tpl_content
            ORDER BY
                content_id DESC
            LIMIT
                0,6
        ";
    $result = mysql_query( $query ) 
            OR die( 'Datenbank-Query konnte nicht ausgeführt werden! LINE: ' . __LINE__ - 1 . "\n\n" . mysql_errno . ': ' . mysql_error );

    // Array für Daten instanzieren
    $arrContent = array();

    // Array mit Daten aus der Datenbank füllen
    while( $content = mysql_fetch_assoc( $result ) )
    {
        $arrContent[][ 'id' ] = $content[ 'content_id' ];
        $arrContent[][ 'title' ] = $content[ 'content_title' ];
        $arrContent[][ 'text' ] = $content[ 'content_text' ];
        $arrContent[][ 'datetime' ] = $content[ 'content_datetime' ]; 
    }
    
    // Elemente des Content-Arrays zählen
    $count_arrContent = count( $arrContent );

    // Inhalt der Templatedatei holen
    $template_uncompiled = file_get_contents( 'template.tpl' )
            OR die( 'Konnte Datei template.tpl nicht einlesen! LINE: ' . __LINE__ - 1 );

    // Template ausführen
    eval( $template_uncompiled );
So, das wäre die Script-Datei. Ich habe diese aber nicht getestet und habe auch nur eine recht einfache Fehler-Routine eingebaut. Die Daten aus der Datenbank habe ich deswegen in einem Array gespeichert, da sich dieses auch recht einfach mit Daten aus einer anderen Quelle füllen lässt und sich dadurch später auch im Template einfacher einsetzen lässt.

Inhalt der Datei template.tpl
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
        <title>Template-Test</title>
    </head>
    <body>
        <h1>Ausgabe des Inhalts aus der Datenbank!</h1>
        for( $i = 0 ; $i < $count_arrContent ;  $i++ )
        {
        <div style="width:400px;margin-bottom:20px;">
            <h2>$arrContent[ $i ][ 'title' ];</h2>
            <span style="font-size:80%;">Erstellt am: $arrContent[ $i ][ 'datetime' ]; Uhr</span>
            <p>nl2br( $arrContent[ $i ][ 'text' ] );</p>                
        </div>
        }
    </body>
</html>

Wie gesagt kann ich keine Garantie darauf geben, dass das Ding wirklich funktioniert. Ich denke aber, dass die Ansätze klar sein sollten. Im Prinzip kann sich das jeder selbst mit rudimentären PHP-Kenntnissen selbst erstellen. Ich persönlich finde das aber keine wirklich elegante Lösung, da hier der Code eigentlich nicht vom Inhalt getrennt wird, lediglich ausgelagert.

PS: Hab ein wenig rumprobiert und das ganze nicht zum laufen gebracht. Die Funktion eval() macht da Schwierigkeiten, ich bin mir also nicht sicher, ob das Ganze in der Form überhaupt möglich ist, möchte es aber trotzdem mal stehen lassen. Ehrlich gesagt ist mir der Sinn der Funktion eval() noch immer ein wenig schleierhaft.
 
Zuletzt bearbeitet:
Wie gut lässt sich denn Smarty auf einem gemieteten Webspace nutzen? Laut Installationsbeschreibung muss ich eine Library hinzufügen, aber darauf habe ich ja keinen Zugriff ^^ Wie gesagt, ich suche nur eine einfache Möglichkeit {PLATZHALTER} durch ein Script zu ersetzen. Dies soll am besten auch auf jedem Webspace lauffähig sein.
 
Hi, ich würde dir auch empfehlen, smarty zu verwenden. Wenn du die templates browserbasiert bearbeiten möchtest, mache das template-directory writeable und bearbeite die dateien in einer textarea.
 
Hätte vielleicht ein kleines Beispiel, wie eine HTML-Datei für Smarty aussehen muss und wie dazu eine kleine PHP-Datei aussehen müsste? Ich will mir das mal genauer anschauen.
 
Zurück