Eigenes Template und dynamischer Content

Nexlamar

Erfahrenes Mitglied
Hi!

Nachdem ich nun mittels CSS Design sauber von HTML trennen kann und ich mir die Grundlagen von PHP reingezogen habe, möchte ich nun auch lernen die Programmierung sauber vom Rest zu trennen - sprich ein Template-System muss her. Da ich sehr wissensdurstig bin, möchte ich das selbst lernen.

Mein aktueller stand entspricht in etwas dem auf dieser Seite präsentierten Turorial, ich habe also ein HTML-Template mit Platzhaltern, eine Liste mit Platzhalterzuweisungen und eine Datei die das Template einliest, die Platzhalter ersetzt, in einer Variable speichert und ausgibt.

Wenn ich es richtig verstanden habe, sollten vor Ausgabe des Templates alle dynamischen Geschichten abgeschlossen sein. Was aber, wenn ich im eingelesenen Content auch dynamische Elemente habe, z.B. ein Formular das ich in Abhängigkeit der Eingaben entsprechend selektiere. In meiner Lösung musste ich dazu das Template teilen und jeweis ober- und unterhalb meines Contentbereiches ausgeben - wie kann ich das verhindern? Ich möchte ein geschlossenes HTML-Dokument und alle dynamischen Geschichten vor Ausgabe abgeschlossen haben.

Beispiel:

PHP:
<?php
/* Templatedateien laden, hier werden die HMTL-Dateien geladen und die Platzhalter ersetzt */
include('inc/template.inc.php');
/* Template Head ausgeben */
echo stripslashes($template_head); 

/* Content */
?>


<form action="index.php" method="POST">
      <select name="lang" size="1">
        <option <?php if ($_SESSION['lang'] == 'deutsch') { echo 'selected="selected"';}?>>deutsch</option>
        <option <?php if ($_SESSION['lang'] == 'english') { echo 'selected="selected"';}?>>english</option>
      </select>
    <input type="submit" value="go" />
</form>


<?php 
/* Template Foot ausgeben */
echo stripslashes($template_foot);
?>


Merci vielmals,
Nexlamar
 
hi

an sich nicht schlech.

Ich habe es meist so gemacht das ich mir eine Index angelegt hab wo die "grobe" Struktur der Seite drin liegt, also sprich wo kommt das Menu hin, wo kommt der Seitenkopf hin und so weiter. Dort dann jeweils ein PHP-Script einbinden was den Aufbau erstellt bzw. was Daten läd und diese dann an eine Funktion übergibt die dir dann die HTML-Daten "erstellt" und das dann zurück gibt.

PHP:
<?php
function showdaten($daten)
{
$return = '<table><tr><td>'.$daten.'</td></tr></table>';

return $return;
}
?>

Nicht unbedingt die beste Lösung, aber ich denke mal es ist in etwa was du machen möchtest.

Wenn du nun allerdings wirklich alles abgeschlossen haben möchtest bevor du eine Ausgabe machst würde ich dir empfehlen eine richtige Template-Engine wie Smarty zu nehmen -> http://smarty.php.net dort ist alles recht gut erklärt. Ist vorallem sauberer und ich denke auch mal etwas einfacher zu händeln


Gruß
King of Darkness
 
Zurück