Dynamische Homepage

Roflmao

Mitglied
Hallo liebe Community.

Ich bin gerade dabei meine erste Homepage zu schreiben. Design und Inhalt sind schon fast fertig und nun stellt sich mir eine Frage.

Ich habe 1 Startseite welche auf ~10-20 Unterseiten verlinkt.

Der Aufbau aller Seiten ist der gleiche.

Header
Navigationsmenue
Hauptcontent / Sidepanel
Footer


Ich habe vor im Sidepanel auf neue News zu verlinken, aber im Moment müsste ich dafür 20 Html Dateien bearbeiten. Der Code für das Sidepanel ist praktisch ja immer gleich. Gibt es einen Weg 1 zentrale Datei zu haben, die von allen Seiten geladen wird, so dass ich immer nur 1 Datei ändern muss?

Ich glaube das dies mit PHP zu bewerkstelligen ist, deswegen habe ich dies hier gepostet.

Über einige Schlagworte wäre ich sehr dankbar.

Vielen Dank
 
Hallo Roflmao,

was du brauchst nennt sich Template(-system).

Du erstellst im Prinzip 1 HTML-Datei mit Layout und Design. In dieser sind aber Platzhalter eingebunden in die der Code von den anderen (Unter-)Seiten mittels PHP geladen wird.
 
Hi

eine PHP-lose Möglichkeit wären HTML-Frames.
Haben aber einige Nachteile und sind ziemlich ungern gesehen.

Mit PHP ist es auch möglich:

Entweder machst du aus jeder HTML-Seite eine PHP-Datei, die nur den zentralen Inhalt in sich hat und Header etc. aus weiteren Dateien dazulädt.
Oder eine zentrale PHP-Datei, die mit "index.php?page=seite2" (sowas in der Art) übergeben bekommt, was als Zentralinhalt angezeigt werden soll.

Die URIs kann man in beiden Fällen mit mod_rewrite so anpassen, dass der Benutzer weiterhin "willkommen.html", "seite2.html" usw. sieht, ohne etwas von PHP zu merken.

Vor- und Nachteile hat beides; erstere Möglichkeit ist eher für wenig Seiten, die Zweite für viele.
Wie viel verschiedene Seiten hat deine Homepage ca. bzw. soll sie irgendwann haben können?
 
Ersteinmal werden es etwa um die 20 Seiten werden, aber später möchte ich das ganze noch in verschiedene Sprachen übersetzen lassen, was die Seitenanzahl dann natürlich sprunghaft in die Höhe schießen lässt.

Ich habe schon ein bisschen über Frames und IFrames gelesen und gehört dass diese nicht mehr der neusten Stand der Technik entsprechen, weshalb ich eine PHP Lösung suche.

Entweder machst du aus jeder HTML-Seite eine PHP-Datei, die nur den zentralen Inhalt in sich hat und Header etc. aus weiteren Dateien dazulädt.

Das kllingt einigermassen simpel :)
Alle meine Seiten sind eh als .php abgespeichert, da ich mit sessions arbeite.

Oder eine zentrale PHP-Datei, die mit "index.php?page=seite2" (sowas in der Art) übergeben bekommt, was als Zentralinhalt angezeigt werden soll.

Hmm ab wievielen Seiten macht es denn Sinn so eine zentrale PHP Datei anzulegen?
 
Zuletzt bearbeitet:
Hi

von der Einfachkeit gibts bei den zwei Varianten nicht viel Unterschiede.

Da das ganze ja aus statischen Seiten besteht, ohne DB etc. dahinter,
und dir die erste Möglichkeit gefällt: Kein Problem.

Titel und sowas müssen die Seiten ja auch extra haben, und das bisschen Overhead wie html-Grundgerüst wird schon keinem weh tun.

Ah...lese gerad erst, dass du irgendwo Sessions drinhast :confused:
Naja...was besser/schlechter ist, könnte dadurch vllt. etwas in die andere Richtung kippen,
aber ohne einen besseren Überblick über das Ganze kann man das schwer sagen.
Möglich bleiben aber beide Varianten.

Wenn du die Dateien sowieso schon als php gehabt hast, kannst du sie ja auch gleich so lassen und musst sie nicht mit mod_rewrite hinter .html verstecken.


Zusätzlich zu den Seiten kommt dann also irgendeine Datei für den Header (.txt/html/irgendwas), in der nur (wirklich nur) der Header ist. Ohne das <html>-Gerüst herum; nur das, was überall gleich ist.

In die echten Seiten fügst du dann statt dieser Stelle einen kleinen PHP-Block ein...
hmm...da gabs so eine schöne Funktion, aber mir fällt partout der Name nicht ein :D...

edit: Aahh, readfile :D
Also, in die Hauptdateien fügst du statt dem Immer-Gleich-Teil sowas ein:
PHP:
<?php
readfile('header.html');
?>
Wobei header.html der Dateiname für den Immer-gleichen Teil ist.
Mehr ist nicht nötig.

Das Gleiche für den Footer etc., fertig.
 
klingt super. Morgen steht ein kleiner Ausflug nach Aachen an, ich werde schauen wann ich die ganze Sachen umsetzen kann, aber spaetestens Montag werde ich ein kleines feedback geben

Danke :)
 
Hallo ich bin es nocheinmal. Ich habe es noch nicht geschafft die Homepage umzuschreiben, habe mich aber ein bisschen zu readfile schlau gemacht.

PHP:
<?php
    $datei_inhalt = '';
    ob_start();
    readfile('./datei.html');
    $datei_inhalt = ob_get_contents();
    ob_end_clean();
    echo $datei_inhalt;
?>

http://www.php-space.info/php-tutorials/101-datei,ausgeben.html

Soviel ich gelesen habe erfuellt dieser Codeblock genau meine Aufgaben. Super. :)

ABER:


Ich hatte noch in Erinnergung, dass es einen include Befehl in php gibt.
Lange rede kurzer Sinn, der include Befehl in php scheint eine andere php Datei zu laden und anzuzeigen. Im Endeffekt sollte er das Gleiche wie der readfile Befehl machen.

(readfile kann eine html datei lesen | include kann warscheinlich nur php dateien ausgeben ,aber an der File extension soll es ja nicht scheitern).

Jetzt frage ich mich natuerlich wo die Unterschiede beider Moeglichkeiten sind und welcher Weg eleganter ist.
 
PHP:
<?php
$s = $_GET['s'] . ".php"; //DEN NAMEN DER DATEI WÄHLEN UND .PHP RANHÄNGEN
// $s = "verzeichnispfad/" . "$_GET['s'] . ".php"; //MIT VERZEICHNISS VORHER: zB pages/
include($s);
?>
Ich hoffe ich konnte dir helfen... ;)
 
Zu deinem Code: Solange du nicht header oder so verwendest reicht nur readfile allein.

Zu include: include bindet ndere PHP-Dateien ein,
um ihre Funktionen/Klassen benützen zu können.
Die Datei wird aber nicht an den Browser geschickt,
deshalb auch nicht angezeigt.

@technikfreack: Wie gesagt, include...
Und man sollte nicht einfach so ungeprüft beliebige Dateien einbinden.
Sicherheitsrisiko.

Gruß
 
Zurück