uschi: SSI in SSI

Hallo,

Ich moechte einen Header fuer unsere Seiten ueber eine Include Datei loesen.

Das Problem ist folgendes:
Der Header hat auch ein variables Element mit drin, das sich je nach aufgerufener Seite aendert.

Die Seiten liegen in Verzeichnissen der Strktur:

/jour/jour/ttttt
wobei ttttt eine fuenfstellige Nummer ist, die sich je nach aufgerufenen Objekt aendert.

Das variable Element ist eine Grafik, die sttttt.gif heisst und im Verzeichnis /covers liegt (koennte ich natuerlich auch in das Verzeichnis /jour/jour/ttttt verschieben).
Der Header sollte in einem Verzeichnis /include liegen.
Ich habe nun versucht, ein include in die include einzubauen:

<TABLE BORDER="0">
  <TR>
    <TD VALIGN="BOTTOM" COLSPAN="2"><A HREF="/forum.htm"><IMG
    SRC="/gif/tforum.gif" ALT="Forum" ALIGN="BOTTOM" BORDER="0"></A><A
    HREF="http://www.springer.de"><IMG SRC="/gif/svlogo2.gif" ALT="Springer"
    ALIGN="BOTTOM" BORDER="0"></A><A HREF="index.htm"><!--#include virtual="objectgif.htm" --></A></TD>

</TR>
  <TR>
    <TD VALIGN="TOP" COLSPAN="2"><A HREF="/forum.htm"><IMG
    SRC="/gif/tb0.gif" ALT="Forum" ALIGN="BOTTOM" BORDER="0"></A><A
    HREF="/whatsnew.htm"><IMG SRC="/gif/twnew.gif" ALT="What's New" ALIGN="BOTTOM"
    BORDER="0"></A><A HREF="/search.htm"><IMG SRC="/gif/tsearch.gif" ALT="Search"
    ALIGN="BOTTOM" BORDER="0"></A><A HREF="/orders.htm"><IMG SRC="/gif/torder.gif"
    ALT="Orders" BORDER="0"></A><A HREF="/helpdesk/"><IMG SRC="/gif/thelp.gif"
    BORDER="0" ALT="Helpdesk" ALIGN="BOTTOM"></A><A HREF="index.htm"><IMG
    SRC="/gif/tup.gif" ALT="Up" ALIGN="BOTTOM" BORDER="0"></A></TD>
  </TR>
  </TABLE>

Funktioniert so leider nicht (es sucht offenbar in /include nach objectgif.htm statt in /jour/jour/ttttt, von wo aus die Datei aufgerufen wird).

Gibt es eine Loesung?

Uschi

  1. Puh, bin nicht sicher, ob ich die Tragweite des Problems überblickt habe, aber mit include im include funktioniert das meines Wissens nicht, da die Daten ja nachdem sie nach ssi geparst wurden gleich an den Client geschickt werden.

    Könntest Du nicht die Header-Datei mit der Entscheidung belasten? Also Die Headerdatei in ein Perl-Script packen, welches erst entscheidet welches GIF angezeigt wird und dann den entsprehenden Code generiert. Ich nehme an, Du bist vom Fach und weisst was ich meine?

    Vielleicht habe ich etwas nicht kapiert, aber eigentlich scheint es mir ganz einfach...

    Mal roh ohne Syntax, nur die Logik:

    shtml-Seite:
    (htmltags...)
    <-- #include virtual="header.pl" -->
    (htmltags...)

    header.pl:
    #/usr/bin/perl -w
    use strict ;-)
    (...)
    Hier die Routine, um das ttttt.gif zu ermitteln (Zufall?)
    my $bild=name des gif

    my $ausgabe = <<AUSGABE
    (...htmltags, des headers...)
    <img src="$bild.gif">
    AUSGABE

    print $ausgabe;

    Gruss,
    Stefan

  2. Hallo,

    Ich bin mir nicht ganz sicher, ob ich dein Problem ganz verstanden habe. Eine Seite die SSI enthält hat ja die Endung *.shtml. Wenn Du in dieser Seite eine Datei einbinden willst, die wiederum includes enthält, dann muss diese auch so heissen (sah bei dir nicht so aus). Allerdings weiss ich nicht, ob das generell möglich ist rekursiv mehrere includes zu verwenden.

    Wenn Du nicht sicher bist, ob er die Dateien an der richtigen Stelle sucht, dann gib die Angaben doch absolut zur Domain-Root an, also <!--#include virtual="/das/was/da/rein/soll.shtml" -->

    Viele Grüße
     Philipp