PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SeitenElememente (Footer, ect.) per JS/PHP einfügen?



justgotowned
14.11.2009, 10:20
moin!!

Ich wollte mal fragen wie das is mir kam schon länger die Idee, z.B. den Footer meiner Page per Javascript auszulagern, und lediglich ein div zu deklarieren in das ich dann mit einer Javascript funktion "schreibe". Sokmit würde der Inhalt angezeigt werden! Der Sinn dahinter: Der Footer befindet sich auf jeer Seite, bei 5 Stück ist eine Änderung bereits nen bisschen Arbeit je mehr umso mehr Arbeit und ich bin ein Freund von Arbeitsminimierung =).

Jetzt wollte ich wissen, wie das mit der Gescwhindigkeit ist, von javascript, im Prinzip würde es nur nach dem DIV suchen und dort HTML Code reinposten =).

Das selbe Prinzip wäre natürlich auch mit PHP realisierbar!!

mfg

Whiz-zarD
14.11.2009, 10:50
Wäre es nicht möglich, den Footer in eine eigene html Datei auszulagern und diese dann lediglich mit JavaScript zu inkludieren?
Das hat den Vorteil, dass wenn man den Footer ändern will, muss man nicht im Script rumpfuschen.

justgotowned
14.11.2009, 11:04
man kann ne eite aus mehreren HTML Dateen zusammenbauen? Meinst du damit jetzt explizit frames? Wäre wirklich von Vorteil, nur Frames sind j ne Sache für scih, wenns anderst gehen würde wäre es sicher eine gute Idee!

Whiz-zarD
14.11.2009, 11:22
Ich meinte keine Frames.
Für gewöhnlich teilt man dynamische Webseiten in einzelne Teilbereiche auf und fügt sie dann später mit einer Scriptsprache wieder zusammen.

So hat man z.B. eine Datei für den Header, eine für die navi, eine für den Content, ...

So kann man schnell und leicht irgendwas verändern, ohne ausversehen, was andereres kaputtzumachen. Bei php gibt es z.B. die Include()-Funktion. Das fügt genau an der Stelle eine Datei ein. auch html Dateien kann man damit inkludieren.
html Dateien müssen ja nicht vollständige html-dokumente sein. Können ja auch nur kleine Teile eines großen sein.

Andere Möglichkeit wäre, ein komplettes Template zu basteln, wo die Inhalte später reinkopiert werden aber damit kenn ich mich nicht besonders gut aus.

drunken monkey
14.11.2009, 12:01
Ich meinte keine Frames.
Für gewöhnlich teilt man dynamische Webseiten in einzelne Teilbereiche auf und fügt sie dann später mit einer Scriptsprache wieder zusammen.

So hat man z.B. eine Datei für den Header, eine für die navi, eine für den Content, ...

So kann man schnell und leicht irgendwas verändern, ohne ausversehen, was andereres kaputtzumachen. Bei php gibt es z.B. die Include()-Funktion. Das fügt genau an der Stelle eine Datei ein. auch html Dateien kann man damit inkludieren.
Vorsicht, du vermischt hier serverseitige und clientseitige Scripts, was doch ein ziemlich großer Unterschied ist.
Dass es mit (serverseitigem) PHP ein Kinderspiel ist, eine Seite aus mehreren Dateien zusammenzubasteln, stimmt. Bei (clientseitigem) Javascript sieht die Sache allerdings schon deutlich anders aus.
Natürlich gibt es die Möglichkeit, mit AJAX o.ä. eine Seite auszulesen und in eine andere zu inkludieren. Sowas Kompliziertes nur wegen eines Footers zu machen, dürfte aber etwas übertrieben sein. Also wird der Code wohl doch im Javascript stehen müssen.

Hier kenne ich mich allerdings nicht sonderlich gut aus. Früher wäre es wohl einfach so gegangen:
bla.html:

<div>
<!-- Hier soll der Footer hin. -->
<script type="text/javascript" src="footer.js"></script>
</div>
footer.js:

document.write("Diese Seite ist &copy; by <em>Max Mustermann</em>! Stehle sie und <strong>STIRB EINES QUALVOLLEN TODES!!!!1111</strong>");
Das ist aber (afaik) mittlerweile seit einigen Jahren deprecated und funktioniert z.B. bei konformen Seiten im Firefox (noch mehr afaik) überhaupt nicht mehr.
Schönerer Stil ist es, DOM-Nodes zu erzeugen und in den DOM-Baum einzufügen, was recht kompliziert ist, aber auch gehen sollte. Hier findest du Referenzen bzw. ein Tutorial dazu:
http://www.howtocreate.co.uk/tutorials/javascript/dombasics
http://de.selfhtml.org/javascript/objekte/document.htm
http://de.selfhtml.org/javascript/objekte/node.htm

Falls du allerdings keine HTML-Tags im Footer stehen hast, sondern bloß reinen Text (oder schon vorher weißt, welche Tags stehen werden und in die auch einzeln den Text einfügen könntest) geht's deutlich einfacher:
document.getElementById("footer").firstChild.nodeValue = "Das ist meine Seite, klau sie nicht!";
Sollte zumindest so sein. (firstChild deswegen, weil du zum Text-Node innerhalb des Divs musst.)


Allgemein ist das vielleicht etwas viel Mühe um sich ein einfaches Search/Replace über mehrere Dokumente zu ersparen (was z.B. Notepad++ auch in einem kann), aber andererseits lernt man wenigstens auch was dabei, also mach' ruhig. ;)

Whiz-zarD
14.11.2009, 12:20
Hier kenne ich mich allerdings nicht sonderlich gut aus. Früher wäre es wohl einfach so gegangen:
bla.html:

<div>
<!-- Hier soll der Footer hin. -->
<script type="text/javascript" src="footer.js"></script>
</div>
footer.js:

document.write("Diese Seite ist &copy; by <em>Max Mustermann</em>! Stehle sie und <strong>STIRB EINES QUALVOLLEN TODES!!!!1111</strong>");
Das ist aber (afaik) mittlerweile seit einigen Jahren deprecated und funktioniert z.B. bei konformen Seiten im Firefox (noch mehr afaik) überhaupt nicht mehr.

An sowas hatte ich gedacht aber das dies nicht mehr möglich ist, wusste ich nicht. ^^

Drakes
14.11.2009, 12:48
Nimm eine Javascript Bibliothek wie Prototype.
Dann wäre das ganze nur noch

new Ajax.Updater(divId, 'page.html');
Du könntest auch versuchen dich mit AJAX auseinanderzusetzen, wobei es recht schwierig ist etwas Browserunabhängiges ohne eine Bibliothek, die darauf schaut, zu erstellen.

Jesus_666
14.11.2009, 15:08
Nimm eine Javascript Bibliothek wie Prototype.
Dann wäre das ganze nur noch

new Ajax.Updater(divId, 'page.html');
Du könntest auch versuchen dich mit AJAX auseinanderzusetzen, wobei es recht schwierig ist etwas Browserunabhängiges ohne eine Bibliothek, die darauf schaut, zu erstellen.
Du willst ein komplettes JavaScript-Framework verwenden, um statischen Text in einer Website anzuzeigen?


Ideal wäre eine serverseitige Lösung, beispielsweise via PHP. Das macht keine Annahmen über den Client (nicht jeder User hat JS für deine Seite aktiv) und ist damit kompatibler. Zwar kann bei AJAX der Footer separat gecachet werden, allerdings dürfte das kaum ins Gewicht fallen.

Drakes
14.11.2009, 15:47
Du willst ein komplettes JavaScript-Framework verwenden, um statischen Text in einer Website anzuzeigen?


Ideal wäre eine serverseitige Lösung, beispielsweise via PHP. Das macht keine Annahmen über den Client (nicht jeder User hat JS für deine Seite aktiv) und ist damit kompatibler. Zwar kann bei AJAX der Footer separat gecachet werden, allerdings dürfte das kaum ins Gewicht fallen.

Nur kommt es scheinbar nicht in Frage, da justgotowned weiss, dass es über php ginge.

justgotowned
14.11.2009, 20:01
kurze nbenfrage indem Thread hier: ist das "name" attribut eigentlich für irgend etwas besonderes gedacht? Ich seh darin manchmal nen abus zweck und dafür isses ganz nützlich!!

Jesus_666
14.11.2009, 21:10
kurze nbenfrage indem Thread hier: ist das "name" attribut eigentlich für irgend etwas besonderes gedacht? Ich seh darin manchmal nen abus zweck und dafür isses ganz nützlich!!

Versuch' mal, ein <form> mit sinnvollen Elementen zu bevölkern, ohne es zu benutzen.

DFYX
15.11.2009, 15:12
Versuch' mal, ein <form> mit sinnvollen Elementen zu bevölkern, ohne es zu benutzen.

Soweit ich weiß, ist dafür in der Zwischenzeit auch id zuständig.

Xardas der Dunkle
15.11.2009, 15:17
Soweit ich weiß, ist dafür in der Zwischenzeit auch id zuständig.
Was die meisten Browser aber noch nicht raffen.


Das ist aber (afaik) mittlerweile seit einigen Jahren deprecated und funktioniert z.B. bei konformen Seiten im Firefox (noch mehr afaik) überhaupt nicht mehr.
Das bezweifle ich irgendwie stark das document.write von den meisten Browsern nicht mehr akzeptiert wird o_O.

drunken monkey
15.11.2009, 17:36
Soweit ich weiß, ist dafür in der Zwischenzeit auch id zuständig.
Echt? o_O Fände ich eigentlich ziemlich idiotisch:
a) Ist ja absehbar, dass das ewig nicht ordentlich umgestellt wird, weil's keiner verwendet und die Browser es demnach auch nicht einfach verlangen können.
b) Ist id ja schon für etwas anderes in Benutzung, was mit der neuen kaum etwas zu tun hätte.
c) Wäre es dann unmöglich, auf einer Seite mehrere identische Formulare bereitzustellen (z.B. Suchfunktion am Anfang und am Ende der Seite).

Hast du da vielleicht einen Link o.ä.?

Das bezweifle ich irgendwie stark das document.write von den meisten Browsern nicht mehr akzeptiert wird o_O.
Habe ich ja auch nicht geschrieben – nur, dass es FF im standardkonformen Modus nicht mehr mag, was ich iirc auf SelfHTML gelesen habe.