Embperl - building dynamic websites with Perl


EmbperlObject
[ << Prev: Aufteilen des Codes in mehrere Komponenten ] [ Content ] [ Next: Debugging >> ]
 (ab Embperl 1.3)

Einen Schritt weiter als das einfache Einbetten von anderen Dateien mittels Execute geht EmbperlObject. EmbperlObject ist ein mod_perl handler, der es erlaubt eine Website in konsistenter Weise aus einzelnen Komponenten zusammenzusetzen. Dabei definiert man ein Rahmenlayout, welches "Platzhalter" für einzelne Elemente der Site (z.B. Kopf, Fuß, Navigation etc.) enthält. Diese "Platzhalter" können nun für unterschiedliche Bereiche (Unterverzeichnisse) der Site mit verschiedenen Inhalten gefüllt werden. Definiert ein Bereich (Unterverzeichnis) keinen eigenen Inhalt, wird automatisch der Inhalt des übergeordneten Verzeichnisses eingefügt. Konkret heißt das, man identifiziert Bereiche, die auf allen/vielen Seiten gleich aussehen sollen, macht daraus eine eigenständige Komponente (HTML Datei) und fügt diese dann nur noch an passender Stelle ein. Es leuchtet ein, dass dies das Design und Änderungen wesentlich vereinfacht, da eine Änderung in der Komponente sich auf alle Seiten auswirkt. Hier ein einfaches Beispiel, um zu verdeutlichen wie EmbperlObject arbeitet; dabei definert base.htm das Rahmenlayout, head.htm enthält den Kopf und foot.htm den Fuß für die Seite:

Anordnung der Dateien:

 /foo/base.htm
 /foo/head.htm
 /foo/foot.htm
 /foo/page1.htm
 /foo/sub/head.htm
 /foo/sub/page2.htm

/foo/base.htm:

 <html>
 <head>
 <title>Beispiel</title>
 </head>
 <body>
 [- Execute ('head.htm') -]
 [- Execute ('*') -]
 [- Execute ('foot.htm') -]
 </body>
 </html>

/foo/head.htm:

 <h1>Kopf aus foo</h1>

/foo/sub/head.htm:

 <h1>Hier ein anderer Kopf aus dem Verzeichnis sub</h1>

/foo/foot.htm:

 <hr> Fußzeile <hr>

/foo/page1.htm:

 Hier steht der Inhalt von Seite 1

/foo/sub/page2.htm:

 Hier steht der Inhalt von Seite 2

/foo/sub/index.htm:

 Index im Verzeichnis /foo/sub

Der Request http://host/foo/page1.htm führt dann zu folgender Seite:

  
 <html>
 <head>
 <title>Beispiel</title>
 </head>
 <body>
 <h1>Kopf aus foo</h1>
 Hier steht der Inhalt von Seite 1
 <hr> Fußzeile <hr>
 </body>
 </html>

Der Request http://host/foo/sub/page2.htm führt dann zu folgender Seite:

  
 <html>
 <head>
 <title>Beispiel</title>
 </head>
 <body>
 <h1>Hier ein anderer Kopf aus dem Verzeichnis sub</h1>
 Hier steht der Inhalt von Seite 2
 <hr> Fußzeile <hr>
 </body>
 </html>

Der Request http://host/foo/sub/ führt dann zu folgender Seite:

  
 <html>
 <head>
 <title>Beispiel</title>
 </head>
 <body>
 <h1>Hier ein anderer Kopf aus dem Verzeichnis sub</h1>
 Index im Verzeichnis /foo/sub
 <hr> Fußzeile <hr>
 </body>
 </html>

[ << Prev: Aufteilen des Codes in mehrere Komponenten ] [ Content ] [ Next: Debugging >> ]


© 1997-2023 Gerald Richter / actevy