(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>
|