• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick

Includes für alle Subdomains

floeschen

Horneburger Pfannkuchenapfel
Registriert
13.08.06
Beiträge
1.402
Auf meiner Website betreibe ich mehrere Subdomains. Für viele Dinge, wie die Navigation, brauche ich SSI (Server Side Includes). Mit den SSI-Befehlen, werden verschiedene HTML-Dateien eingebunden.

Soweit ich das jetzt gemacht habe, muss ich für jede Subdomain die eingebundenen Dateien separat hochladen. Das ist vor allem etwas umständlich, weil damit der Vorteil der Includes, nämlich eine einfachere Aktualisierung, verloren geht.

So sieht das etwa aus:
  • includes (Ordner auf der Hauptebene)
  • xyz (Ordner auf den eine Subdomain http://xyz.example.com/ verweist)
    • includes
Im Moment bedeutet das, ich muss die selben Include-Dateien in beide includes-Ordner legen, damit es überall funktioniert.

Gibt es eine Möglichkeit, mit der man auch von Subdomains aus Includes im Hauptordner einbinden kann?

Wäre PHP ein Ausweg? Habe zwar nicht vor, mich damit zu befassen, aber was sein muss, muss sein. :D
 

fox_rc

Golden Delicious
Registriert
28.12.07
Beiträge
10
Soweit ich das sehe, müsste es reichen, wenn Du von Deiner Subdomain einfach um eine Ordnerebene "zurückspringst".
Evtl. sollte das so funktioniere:
<!--#include file="../includes/header.shtml" -->

... oder so:
<!--#include virtual="includes/header.shtml" -->

Hier noch ein Link dazu:
http://de.wikipedia.org/wiki/Server_Side_Includes


PS: Wenn's funktioniert, dann bitte ich natürlich um Feedback
 
Zuletzt bearbeitet:

floeschen

Horneburger Pfannkuchenapfel
Registriert
13.08.06
Beiträge
1.402
Komischerweise funktioniert es nicht. Auch habe ich mich schon vorher bei einschlägigen Seiten schlau gemacht, dort gibt es keine Hilfe für so etwas… o_O

Meine Include-Dateien haben alle die Endung .html, wobei es da ja nicht drauf ankommt. Bei den Dateien, wo die Includes dann eingebunden sind, habe ich nur .html-Endungen. Den Server bringe ich nachher wieder mit einer Anweisung in der .htaccess-Datei zum Parsen der SSI. Alles funktioniert, nur dieses Zurückspringen in der Ordnerebene will nicht. ;)
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
Ist das ein Linux-Server und hast Du einen SSH-Zugang? Dann arbeite doch mit Symlinks ("man ln").
 

fox_rc

Golden Delicious
Registriert
28.12.07
Beiträge
10
... oder doch PHP

Versuche es mal mit dieser Zeile:
<?php include("../includes/header.html") ?>

Je nach Server solltest Du die Datei (die den PHP-Code enthält) dann wohl in "datei.php" umbenennen.

PS: Mit einer Strato-Subdomain funktioniert das jedenfalls ;)
 

floeschen

Horneburger Pfannkuchenapfel
Registriert
13.08.06
Beiträge
1.402
Es ist zwar ein Linux (Apache) Server, aber einen SSH-Zugang habe ich nicht. Bietet mein Provider Hoststar nicht an. o_O

Ich bastle gerade an einer PHP-Version meiner Seite herum und erleide dabei noch viele Fehlermeldungen. ;) Wahrscheinlich werde ich es halt so lösen. Vielen Dank für die Hilfe;)
 

fox_rc

Golden Delicious
Registriert
28.12.07
Beiträge
10
"Ich bastle gerade an einer PHP-Version meiner Seite herum" klingt sehr aufwendig.
Wenn Du nur den o.g. Code in Deine HTML-Seite einfügst und die Datei mit der Endung ".php" ausstattest sollte das eigentlich schon funktionieren.
 

floeschen

Horneburger Pfannkuchenapfel
Registriert
13.08.06
Beiträge
1.402
Gerne möchte ich die Navigation in nur einem File haben, die sich aber je nach Seite anpasst und so die aktuelle Seite hervorhebt.

Bis jetzt bin ich so weit.
Code:
<?php
$normal = "<li>";
$aktuell = "<li class=\"current\">";
if ($PHP_SELF = '/index.html') {
    echo $aktuell;
} else {
    echo $normal;
}
?>
Die Idee ist folgende. Die Navigation ist so aufgebaut: <ul><li><a><b></b></a></li></ul>

Um die aktuelle Seite in der Navigation hervorzuheben, muss in den LI-Tag das Attribut class mit dem Parameter current. Sieht dann also so aus: <li class="current">

Leider spuckt das PHP-Skript noch einige Fehler aus, bzw. es stoppt das Parsen nach der ersten Zeile. o_O
 

fox_rc

Golden Delicious
Registriert
28.12.07
Beiträge
10
Versuche es mal damit.

Code:
<?php
$normal = "<li>";
$aktuell = "<li class=\"current\">";
if ([B]$_SERVER['PHP_SELF'] ==[/B] '/index.html') {
    echo $aktuell;
} else {
    echo $normal;
}
?>

Das funktioniert allerdings nur im Root-Verzechnis. Zum Test lasse ich mir die Variable extra ausgeben.
Code:
echo $_SERVER['PHP_SELF'];
 
  • Like
Reaktionen: floeschen

floeschen

Horneburger Pfannkuchenapfel
Registriert
13.08.06
Beiträge
1.402
Danke vielmals für den Tip! ;) Kann man aber die Variable $_Server['PHP_SELF'] durch etwas ersetzen, das überall auf der Seite funktioniert?

Edit: Schon passiert. Hab einfach nur noch PHP_SELF hingeschrieben. ;) Danke vielmals;)

Schön wärs! :( Leider tut sich gar nichts, unabhängig von der verwendeten Variable.
 

fox_rc

Golden Delicious
Registriert
28.12.07
Beiträge
10
Das verstehe ich nicht ganz.

Der Kommentar "Das funktioniert allerdings nur im Root-Verzechnis." bezog sich auf den Vergleich mit dem String "/index.html" . Wenn Du die PHP-Abfrage bzw. die Datei mit dem Code in einem Unterordner ausführst bzw. startest, dann ist der Unterordner vorangestellt. (Bsp: "/Unterordner/index.html")
 

floeschen

Horneburger Pfannkuchenapfel
Registriert
13.08.06
Beiträge
1.402
Aha! :) Ich dachte, die Variable $_SERVER['PHP_SELF'] läuft nur im Root-Verzeichnis. Sorry

OK! Alles funktioniert und läuft wie es soll - bis jetzt… ;) Danke für deine Hilfe, aber durch meine Unwissenheit haben sich einige Flüchtigkeitsfehler in das Skript eingeschlichen, die jetzt behoben sind. Alles tut! :)