Mailinglisten-Archive |
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