Lieber Norbert,
Die eigentliche Ausgabe findet durch die /tpl/tpl.php statt, nicht in der index.php. Die liefert nur den Inhalt an die /tpl/tpl.php.
muss ich das jetzt für besonders sinnvoll erachten?
Meiner Meinung nach sollte das Haupscript (in Deinem Falle index.php) alle anderen Scripte organisieren, um am Ende die eigentliche Ausgabe an den Browser zu schicken. Alle anderen eingebundenen Scripte sollten nur am noch nicht ausgegebenen Code herummodifizieren, jedoch keinesfalls diesen bereits an den Browser schicken, da sonst wesentliche Dinge wie z.B. Cookies oder andere HTTP-Header nicht mehr gesendet werden können, falls man im Programmverlauf feststellen sollte, dass man diese benötigt.
Mein Vorschlag: Ändere Deine Programmlogik dahingehend, dass Du (von mir aus in einer globalen Variablen) den bisher erzeugten HTML-Code bereithälst, bevor ihn Deine index.php endgültig an den Browser schickt. Deine tpl.php darf an diesem Code nur "herumfummeln", ihn jedoch keinesfalls per echo irgendwohin schicken!
Damit hast Du dann Deine ursprüngliche Frage beantwortet, die nach einer "richtigen" Template-Maschine gestellt war. Wenn Du nämlich den HTML-Code bis zum Ende des Scripts in einer Variablen vorhälst, dann kannst Du mit verschiedenen Unter-Scripts die verschiedensten Teilbereiche Deines Templates abarbeiten, bis dann am Ende je nach Anforderung ein passendes HTML-Dokument fertiggestellt ist.
Beispiel (nicht besonders gut, klärt aber meine Sichtweise):
<?php // index.php
include '/tpl/unterseiten.php'; // enthält ein Array mit möglichen IDs und deren Templates
$seite = 'index'; // default
if (isset($_GET['id']) && $_GET['id'] != '') {
// andere Unterseite aufrufen?
$seite = $_GET['id'];
}
$seite = $seite.'.tpl'; // Vorsicht! Ungeprüfte IDs könnten ein Sicherheitsrisiko werden!
include '/scripts/tpl.php'; // holt die benötigte Template-Datei mit einem vorläufigen HTML-Code und speichert ihn in $GLOBALS['html']
include '/scripts/formular.php'; // Formular einbauen? (ändert den bisherigen Code in $GLOBALS['html'] falls notwendig)
include '/scripts/gb.php'; // soll gb angezeigt werden?
...
echo $GLOBALS['html']; // HTML-Dokument an Browser ausgeben und Ende
?>
Liebe Grüße aus Ellwangen,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)