• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mastertemplate für Seiten

HeinDubty

Neues Mitglied
Hallo allesamt,

ich komme aus der Java-Welt und mache gerade meine ersten Gehversuche in PHP. Nun brauche ich ein "Etwas", das es mir erlaubt um meine eigentliche PHP-Seite ein HTML-Gerüst zu bauen. Hintergrund ist, dass ich gleichartige Seiten bauen will.

Möglichkeit a)
Ich habe eine Seite, die das HTML-Gerüst enthält und den eigentlichen Content in die Seite inkludiert.

master.php
PHP:
<html><body>
<!-- CSS und Navigationsstruktur und son Kram -->
<?php include $_GET["templatename"]; ?>
<!-- Footer & Co -->
</body>
</html>

Das will ich nicht machen, ich will lieber eine Content-Seite, die die Struktur inkludiert. Das Problem dabei ist, dass ich vor und hinter meinen eigentlichen Content etas einfügen muss. Ich will etwas, dass etwa so funtioniert:
content.php
PHP:
createHtml(
Hier steht mein Content mit ganz viel PHP und HTML und CSS und JS und Co.
)
Das soll dann die obere Struktur erzeugen, nur dass an Stelle des Include mein Content steht.
In Java wäre es ein BodyTagSupport, gibt es in PHP ein Equivalent?

Gruß Hein

P.S. Die Lösung zwei Includes zu verwenden gefällt mir nicht so recht. Ich will nicht zwei Seiten anpassen zu müssen, zum Öffnen und Schließen von Tags.
PHP:
include "oberesGerüst.php";
Hier steht mein Content mit ganz viel PHP und HTML und CSS und JS und Co.
include "unteresGerüst.php";
 
Seit der Umstellung auf die Zend Engine, wurde der OOP Kern von PHP so stark verbessert, dass sich so ziemlich alle gängigen Java-Entwurfsmuster auch in PHP abbilden lassen.

Was Du suchst sieht nach einem einfachen Template-View-Pattern aus!?

PHP:
<?php
class TemplateView {
    private $vars = array();

    public function __get($name) {
        return (isset($this->vars[$name])) ? $this->vars[$name] : false;
    }

    public function assign($name, $value) {
         $this->vars[$name] = $value;
    }

    // der funktion soll der pfad zum master template angegeben werden
    public function render($template) {
        ob_start();
        if (file_exists($template)) include $template;        
        return ob_get_clean();
    }
}
?>

irgend ne php datei
PHP:
<?php
$template = new TemplateView();
$template->assign('Content', 'Mein Inhalt');
echo $template->render('masterTemplate.php');
?>

masterTemplate.php
HTML:
<hjtml>
    <head></head>
    <body>
        <?php echo $this->Content; ?>
    </body>
</html>
 
Zurück
Oben