[PHP] Homepage Architektur vorschläge?

pfORchT

Ensign
Registriert
Juli 2005
Beiträge
213
Hallo, ich möchte eine Seite mit PHP in dem Stil erstellen, wie z.b. Computerbase ist.

D.h. immer Ein einheitliches Layout, eine Titelbar (als ob ein Frame), und die Möglichkeit den Link aus der Adresszeile zu speichern, und dannach genau das gleiche aufrufen zu können.

Wie lege ich die Ordner architektur am besten an, damit möglichst wenig (oder garnix) doppelt vorhanden sein soll.

Wie muss welche Seite eine andere Includen (oder was auch immer)?

Ich hab auch den Begriff Template-engine gehört - aber kann damit nix anfangen.

Könnte mir Jemand ein Beispiel in etwa so zeigen?

ROOT

index.php
style.css

news/index.php
news/aktuell.htm
news/alte_news.htm
news/bild1.jpg
news/bild2.jpg

anleitungen/index.php
anleitungen/transfer.htm
anleitungen/schleife-binden.htm
anleitungen/bilder.jpg
 
Das, was immer gleich bleibt (z.B. Titelleiste, Menü etc.) fügst du in andere Seiten mittels include ein. Wie du die Ordnerstruktur machst ist dir überlassen; doppelt machen musst du eigentlich nichts.

Wenn du eine Titelleiste hast, die immer gleich bleibt, dann kannst du die Datei mit dem entsprechenden Code ins Hauptverzeichnis legen, und von deinen anderen Dateien (wo auch immer die sich befinden) darauf zugreifen.

titel.php

news/1.php.....mit.....<?php include ("../titel.php"); ?>
news/2.php.....mit.....<?php include ("../titel.php"); ?>
news/3.php.....mit.....<?php include ("../titel.php"); ?>

anleitungen/1.php.....mit.....<?php include ("../titel.php"); ?>
anleitungen/2.php.....mit.....<?php include ("../titel.php"); ?>
anleitungen/3.php.....mit.....<?php include ("../titel.php"); ?>



Hast du für die News ne andere Titelleiste, als für Anleitungen, dann kannst du in die jeweiligen Ordner ne eigene Titelleisten-Datei legen.


news/titel.php
news/1.php.....mit.....<?php include ("titel.php"); ?>
news/2.php.....mit.....<?php include ("titel.php"); ?>
news/3.php.....mit.....<?php include ("titel.php"); ?>

anleitungen/titel.php
anleitungen/1.php.....mit.....<?php include ("titel.php"); ?>
anleitungen/2.php.....mit.....<?php include ("titel.php"); ?>
anleitungen/3.php.....mit.....<?php include ("titel.php"); ?>



Oder so in der Art.
 
Vielen Dank. Der Erste Vorschlag von dir ist genau das, was ich mir vorgestellt habe.

Nur leider gibts jetzt so spontan gesehen ein Problem: Im titel, der sich im übergeordneten Verzeichnis befindet, sind auch grafiken verknüpft. Beim Includen werden die pfade aber nicht angepasst.
Beim zweiten Vorschlag wäre das ja kein Problem. könnte immer über ../images auf den Bilderordner zugreifen - nur dann müsste sich die titel.php in jedem Ordner alles Kategorien befinden (also mehrmals vorkommen) - für Änderungen im Design oder im Menü ist das aber umständlich.
 
Wieso?

Mit nem bissel Hirnschmalz kannst du doch den Pfad des ausführenden Scriptes bestimmen und die Pfade zu den Dateien/Scripten/Styles im eingebundenen Script dynamisch schreiben lassen. Sind in etwa 15 Zeilen Code, wenn man das Minimalprinzip verfolgt.

Eine Template-Engine verbindet halt mehrere Template (HTML-Seiten) zu einer einzigen über definierte Platzhalter. Würde Dir in Deinem Projekt echt helfen. Müsstest halt nur wissen, was Du so genau brauchst. Die m.E. einfachste ist die FastTemplate-Klasse für PHP.


Ciao
 
Die Verwendung von Templates lohnt sich für die meisten Projekte (wenn nicht sogar alle), da der Pflegeaufwand sehr gering gehalten wird. Baut man dann auch noch massiv auf CSS, so kann man am Ende fast alles über eine Datei verändern, was sehr bequem ist.

Einige Beispielartikel einfacher Natur:
- Allgemein: http://de.wikipedia.org/wiki/Template_Engine
- http://www.4websites.de/tricks/artikel/216
- http://www.sitepoint.com/article/beyond-template-engine

Ich baue alle meine Projekte auf Templates auf, programmiere mir jedoch alles selber. Für den Anfang empfiehlt es sich jedoch eher, auf fertige Lösungen zurückzugreifen, bis man deren Schwächen nicht nur kennt sondern auch selber ausmerzen kann.
 
Danke sehr für die Antworten,
ich habe es nach dem Vorschlag von folgender Seite gemacht:

http://www.4websites.de/tricks/artikel/216

Es wird quasi eine Seite mit php Code erstellt, wo der inhalt anhand vom parameter aus dem unterodner "content" geladen wird.

Einziges Problem jetzt: Pfade.

Wie gehe ich am geschicktesten damit um? Beim Erstellen des Inhaltes im "Content" ordners werden grafiken zum parallelordner "images" verknüpft (../images/bild.jpg).
Wird dann die Seite im übergeordneten Ordner Included oder Required, müsste ich die zwei punkte und den slash streichen.

Wie macht ihr es?
 
Verwende doch einfach absolute Angaben relativ zum entsprechenden URI. Dann sparst du dir das nachträgliche Anpassen der einzelnen Links.
Dies könnte dann Beispielsweise so aussehen:

HTML:
<img src="/images/bild.jpg" alt="Beispielbild" />
Ansonsten kannst du auch per PHP auch über die entsprechende Server-Variable und die Anzahl der enthaltenen Slashes die entsprechende Ebene ermitteln und dann mit einer kleinen Abfrage und beispielsweise mit Hilfe der Funktion str_repeat() den entsprechenden Pfad generieren.

MfG mh1001
 
relative Pfade sind die optimale Lösung, da sie auch mit mod_rewrite-Links usw. gut kooperieren.
 
Hu,

ich hät mal ne Frage zu diesem Beispiel.

Die URLs haben da ja jetzt alle so eine Form: index.php?main=punkt1.

Wie verlinke ich denn dann von anderen Seiten oder über eine Datenbank auf diese Seite?

<a href="index.php?main=punkt1"></a> bzw. in der DB index.php?main=punkt1, oder wie?


Kommt mir irgendwie komisch vor :)
 
Zuletzt bearbeitet:
Hallo,

ja, genau so wie du es genannt hast verlinkst du die einzelnen Seiten.
Da du ja immer die selbe Datei aufrufst, wird in dem Beispiel die Ausgabe immer nur durch den übergeben GET-Parameter "main" bestimmt. Abhängig davon, was du übergibst, wird dann der entsprechende Teil aufgerufen.

Wenn du die Verweise in einer Datenbank speichern möchtest, macht es aber Sinn, nur den übergebenen Wert zu hinterlegen, da diese sich ja sowieso in diesem unterscheiden.
Also bspw. "punkt1". - Das spart Platz und macht das ganze flexibler. ;)

MfG mh1001
 
Das ist eigentlich gar nicht so blöd, weil ich die URL sowieso aus allem was so in der DB rumkreucht zusammensetzen kann ;)

Danke!
 
Zurück
Oben