phpbar.de logo

Mailinglisten-Archive

[php] Demo zu $PHP_AUTH_*

[php] Demo zu $PHP_AUTH_*

Matthias Pigulla mp_(at)_webfactory.de
Fri, 14 May 1999 16:54:29 +0200


Andreas Kraftl wrote:
> Ich möchte ein komplett dynamisches Webangebot erstellen. D.h. mein
> Wunsch wäre es, daß es ein Template gibt in dem dann dynamisch die
> Navigation und der Inhalt aus einem File eingebunden wird.

"Dynamisches Webangebot" ist ja sehr schwammig. In der Tat ist es
schwierig, hier allgemeine Ratschläge zu geben. Leider sehe ich da einen
kleinen Widerspruch zwischen "komplett dynamisch" und "Template [...]
die Navigation und der Inhalt [...] eingebunden."

Ist die ganze Struktur dynamisch, d.h. können komplette Site-Bereiche in
der Datenbank definiert werden (d.h. verschiedene Templates, die
wiederum in der DB liegen?) Können dann beliebig viele Seiten in freiem
Layout entstehen, die irgendwie in die Bereiche verlinkt werden müssen?
Die Bilder dazu auch in die Datenbank? Das wäre schon ein Extremfall von
"dynamisch", und könnte auf so eine Art serverseitiges FrontPage mit
Weboberfläche hinauslaufen ;-)

Oder hast Du vielleicht "nur" eine "einfache" Site mit mehreren
Navigationsbereichen, und möchtest für diese Site-Bereiche Content aus
einer Datenbank holen und in ein Template setzen? Das bedeutet dann ja,
daß die Struktur statisch ist, dto. das Layout, und das nur
Inhaltübersichten und Inhalt generiert werden müssen.

> Wie kann ich einem link beibringen --> lade doch das template mit der 
> navigation und dem Inhalt?

Wir arbeiten im Moment an einem Relaunch einer Site; Da sieht das
Problem wie folgt aus:
- keine Frames, d.h. Navigation und Content müssen als eine Datei
ausgegeben werden
- ein Rahmen-Layout, d.h. oben immer Banner, rechts Werbung etc.
- mehrere Bereiche, die sich durch unterschiedliches Rahmen-Layout
auszeichnen
- in jedem Bereich eigene Unternavigation
- beliebigen Content in jedem Bereich anzuzeigen
- diesen Content teilweise mit Templates dynamisch aus DB generieren

Das ganze klingt sehr kompliziert, ist es aber nicht. Prinzipiell sehen
die URLS immer in etwa wie
http://domain.de/nav.php3/bereich/dateipfad/datei aus. Auf alles hinter
nav.php3 kann man mit der variable $PATH_INFO zugreifen.

nav.php3 ist dabei der "Rahmen-Generator", und baut in Abhängigkeit von
"bereich" den notwendigen Rahmen auf. An den notwendigen Stellen wird
dann auch die Unternavigation bereich/nav.php3 includiert (die als
getrennte Datei vorliegt). Der Haupt-Content wird aus
"bereich/dateipfad/datei" bezogen und ebenfalls includiert.

Im entsprechenden Verzeichnisbaum auf dem Server ist der gesamte Inhalt
analog zu den Bereichen in Unterverzeichnisse verteilt, daß macht die
Organisation leichter. Dann in den eigentlichen Inhaltsdateien noch
Daten aus der DB dazuzuparsen, ist einfach.

Diese Lösung ist für uns sehr bequem: Wir geben einmal zentral die
Rahmen vor, und man braucht sich in den Unterdateien darum schon mal
nicht mehr zu kümmern.

Trotzdem sind wir bei der Datei-Referenzierung noch völlig frei, können
gleichwohl noch .asis, .html .php3 etc. als Haupt-Content einbinden.

Weiterhin kommt die Lösung so für den Rahmen ohne Argumente aus - diese
bleiben für die eigentliche Content-Datei übrig. Ich kann also auch ein
Content-Template haben, daß mit einer ID Daten aus der DB holt:

http://domain.de/nav.php3/news/show.php3?id=12345
                 ^^^^^^^^^^^^^           ^^^^^^^^
                        | ^^^^^^^^^^         + Diesen Artikel im
Content-Template aus DB holen.
       Rahmen aufbauen  +     |
    für Bereich "News"        + Datei news/show.php3 
                                als Template innerhalb 
                                des Rahmens

Ansonsten würde ich bei der Planung schon darauf achten, Navigation,
statischen Content, Templates und Engines streng voneinander zu trennen.
Dazu haben wir etwa folgende Organisation:

Datenbank-Klasse -> kapselt Datenbank-Funktionalität, so daß man
prinzipiell von MySQL weg könnte,                     indem man nur hier
rumbastelt. (Wer will weg von MySQL ;-)?)

Board-Engine -> baut auf Datenbank-Klasse auf und bietet Funktionen für
alle Situationen (Posting                  anzeigen, Threadlisten,
schreiben etc.
                Analog dazu gibts auch Chat, Mailservices etc.

Templates    -> Beschreiben den Seitenaufbau, d.h. diese Dateien
generieren dann letztendlich die                 anzuzeigene Seite. Hier
werden nur Engine-Aufrufe verwendet.

Navigation   -> Organisiert die Auswahl der Templates etc.

Navigation und Templates kann man dabei ja fast noch gleichsetzen. Diese
drei Stufen haben den Vorteil, daß man 
1) Leicht die Datenbank ändern kann, und wenn es nur ein neues Paßwort
oder ein neuer DB-Server ist.
2) Die Engines leicht modifizieren kann, z. B. wenn sich die DB-Struktur
ändert oder neue Funktionalität überhaupt oder innerhalb der Engine
dazukommt.
3) Sich auf bestehende Grundfunktionalität neues Design oder neue
Struktur aufsetzten läßt.

Ein Eingriff oder Umbau in einer der drei Stufen ist - bei richtiger
Planung - transparent durchführbar. Wenn man in jeder Datei Layout und
Dynamik zusammenpackt, kann man sowas vergessen - ich spreche aus
schlechter Erfahrung >:->.

Ich hoffe, daß ich damit wenigstens ein paar Ideen vermitteln konnte und
Euch nicht über die Maßen belabert habe ;-) :))

Matthias
-- 
   w e b f a c t o r y | matthias pigulla
      www.webfactory.de  mp_(at)_webfactory.de




php::bar PHP Wiki   -   Listenarchive