|
ulf-wendel.de   
|
|
 Home < Technik der Site    |       |  
Print Version    
---
|
|
 Home 
 PHP Projekte 
 PHP Schulung 
 Technik der Site 
 Büchertipps 
 Fotografie 
 Airbrush 
 Kontakt 
 Stuff 

Technik der Site

Meine Homepage basiert auf einer Abwandung des von Johann-Peter Hartmann in unserer PHP Schulung unter Extending PHPLib vorgeschlagene "Page-Modell". IT[X] und Menu 3 bilden die Basis des eingesetzten Page-Modells.

Anforderungen

Diese Site stellt recht geringe Ansprüche an das Page-Modell. Gefordert ist eine automatische Erstellung von Navigationselementen, eine Print-Version, die Anzeige des letzten Änderungsdatums sowie der Einsatz von Templates, um Anpassungen des Layouts so einfach wie möglich zu gestalten, obwohl und gerade weil jede Seite ein einheitliches Layout aufweisen soll. Zur Verfügung steht ein Apache Webserver mit PHP 4 Unterstützung. Die Entwicklung des Systems darf nur wenige Stunden in Anspruch nehmen.

Programmplanung

Zur Umsetzung werden die Module IT[X] und Menu 3 benutzt. Die Module liefern wichtige Teile des Ganzen. Ein Controller - das Page Objekt - vereint die Ergebnisse und versteckt die Komplexität der Aufgabe vor dem Anwender. Dieser soll gar nicht bemerken, daß ein Page-Modell den Seitenaufbau kontrolliert, weshalb das System automatisch im auto_prepend File gestartet wird.

Puzzlestücke

Alle Seiten der Präsentation haben ein einheitliches Aussehen, das vier Bereiche aufweist.
  • Kopfzeile mit dem Projektnamen und der You-are-here Navigationsleiste
  • Fußzeile mit einem Link zur Printversion, dem Änderungsdatum und einem Copyright Vermerk
  • Baumnavigation am linken Seitenrand
  • Inhaltsspalte deren Headline dem Seitentitel entspricht
Mittels eines HTML Editors wird ein Template - eine Dokumentvorlage - für alle Seiten erstellt. Alle auf dieser Site verwendeten Template können Sie unter http://www.redsys.de/templates/ einsehen. In den vier Contentbereichen werden Platzhalter plaziert. Die meisten Templatesysteme, wie auch IT[X], verwenden Platzhalter in der Form "". In geschweifte Klammern eingeschlossen wird der Name eines Platzhalters eingefügt. Der Platzhalter wird später von Templatesystem durch den zugewiesenen Inhalt ersetzt.

Die Anwendung von IT[X] ist bei einfachen Templates fast selbsterklärend. Das Template wird geladen und mittels der Methode setVariable() werden die Platzhalter in der Vorlage durch Inhalte ersetzt.


Einfaches IT[X] Beispiel Top

<?php
  
// IT Templatesystem einbinden
  
include "IT.php";
  
  
// Instanz der Templateklasse erzeugen, Pfad zu den Templates angeben
  
$tpl = new IntegratedTemplate("templates/");
  
  
// Dokumentvorlage laden - lädt templates/page.html
  
$tpl->loadTemplateFile("page.html");
  
  
// Ersetzungen vornehmen
  
$tpl->setVariable("HEADLINE""Technik der Site");
  
$tpl->setVariable("CONTENT""Beschreibung zur Technik");
  
  
$tpl->setVariable("NAVIGATION_URHERE""Home >> Technik der Site");
  
$tpl->setVariable("NAVIGATION_TREE""Home<br />PHP Projekte<br />PHP Schulung...");
  
  
// ...

  // Seite ausgeben  
  
$tpl->show();
?>
    

Broken Links ade!

Wer jemals große Sites mit mehreren hundert Seiten ausschließlich mit einem HTML Editor erstellt hat, der weiß welcher Aufwand notwendig ist, um alle Navigationselemente anzupassen und sicherzustellen, daß kein Link ins Leere führt. Menu 3 generiert dynamisch die für jede Seite passenden Navigationselemente in drei Darstellungsformen: Baumnavigation, You-are-here und eine Zeilendarstellung.

Die Navigationsstruktur wird von einem statischen, mehrdimensionalen Hash beschrieben. Alle Menüpunkte werden von einem Hash beschrieben. Dieser enthält neben dem Titel, die URL und optional unter dem Index "sub" Unterpunkte in Form weiterer, tiefer geschachtelter Menüpunkte. Zu beachten ist, das die ID der Menüpunkte ("unique_id_1", 2, 21) und die URL Angaben eindeutig sein müssen.


Menu 3 - Hash mit der Struktur eines Menüpunkts Top

<?php
 
// Menüeintrag ohne Unterpunkt
 
$menupunkt1  = array(
                  
"unique_id_1" => array(
                                     
"title"  =>  "Beschriftung unique_id_1" ,
                                     
"url"    =>  "url1.php"
                                   
)
                );

 
// Menüeintrag mit einem Unterpunkt
 
$menupunkt2  = array(
                  
2           => array(
                                   
"title"  =>  "Beschriftung 2" ,
                                   
"url"    =>  "url2.php" ,
                                   
"sub"    => array(
                                                 
21  => array(
                                                          
"title"  =>  "Unterpunkt 1" ,
                                                          
"url"    =>  "url2_unterp1.php"
                                                        
)
                                               )
                                 )
                );
?>
    

Die Anwendung der Menu Klasse ist trivial, weil nach der Instanziierung der Menüklasse nur noch die Methode get() oder show() aufzurufen ist, um die Navigation auszugeben.
Menu 3 - Anwendungsbeispiel Top

<?php
 
// Menu 3 einbinden
 
include "menu.php";

 
// $menu = ...

 // Menüklasse mit der Struktur initialisieren und Baumdarstellung wählen
 
$m = new menu($menu"tree");
                     
 
// Navigationsleiste für diese Seite ($PHP_SELF) erstellen
 
print $m->get();
?> 
    

Eine Ableitung der Menu 3 Klasse wird dazu benutzt, die Funktionen zur Erzeugung von HTML anzupassen, und die Navigationsstruktur in einer Klassenvariable abzulegen.

Lötkurs

Zwei Module des Page-Modells wurden erstellt und warten darauf von einem Controller zum Leben erweckt zu werden. Die Aufgabe des Controllers - der Page Klasse - ist es, das Template Objekt mit Content und den verschiedenen Nagivationselementen aus der Menüklasse zu versorgen und die Ergebnisse auszugeben. Die hierfür benötigte Funktionalität wird ein einer Klasse gekapselt.

Die Page Klasse entnimmt den Seitencontent aus auf dem Webserver abgelegten PHP Dateien. Bei den Dateien handelt es sich nicht um PHP Skrite im eigentlichen Sinne, sie enthalten keinen Programmcode, sondern benutzerdefiniertes Markup. Es soll lediglich sichergestellt werden, daß vor der Ausgabe der Seite, das per auto_prepend eingebundene Page-Modell die Seite parst und in ein HTML Dokument wandelt. Der Ablauf ist wie folgt:

  1. Anfrage an den Webserver
  2. Start des PHP Interpreters
  3. Einbindung und Start des Page-Modells über auto_prepend Anweisung
    1. Outputbuffering starten
    2. Template- und Menü-Modul laden und starten
    3. Markup des ausgeführen Skripts auslesen
    4. Template mit Content und Navigationselementen füllen
    5. Template ausgeben
  4. PHP Interpreter mit die() beenden, bevor das Markup im Skript angezeigt wird

Faules Ende

Es bleibt dem Leser überlassen das dargelegte selbst zu einem Ganzen zu verbinden. Wer ungeduldig ist, wirft einen Blick auf die Skripte, welche diese Site generieren. Der Source kann eingesehen werden: Programmcodes und Beispielseite. Fast alle Verzeichnisse auf dem Webserver sind browseable.

Eine kommerzielle Nutzung des Materials ist untersagt. Privatanwender mögen ob der mangenden Qualität schmunzeln oder den Code als Ausgangsbasis für eigene Versuche verwenden.

<  ^  >

 Neues

 XML/XSLT Menu
 OOH-Form Rewrite

 PEAR Cache:
  SHM Container

 Suchstring Parser
 Buchrezensionen
 PEAR Cache:
  OutputCompression

 PEAR Menu Browser
 PEAR Menu Tutorial 
 PEAR Cache


 Tipp

Download Version:
oben rechts,
Download *.tar.gz
|
| --- |
|
  Top   |   <  ^  >   |   phpOpenTracker Statistik   |   URL: http://www.ulf-wendel.de/technik/   |   Stand: 03.03.2001   |   © Ulf Wendel   
|
| --- |

0.017 s Bearbeitungszeit, 0.002 s IT[X], 0.003 s Menu 3