Frank: SSI include virtual

Hallo,
ich möchte bei einem include virtual
den Dateinamen im Query mitgeben.

<!--#include virtual="header.shtml?DOCUMENT_NAME" -->
haut leider nicht hin.
Auch
<!--#include virtual="header.shtml?$ENV{'Script_NAME'}" -->
und ähnliche Varianten wollen nicht klappen :o(

Geht das überhaupt ?
Kann mir jemand einen Tipp geben ?

Danke, Frank

  1. hallo,

    ich möchte bei einem include virtual
    den Dateinamen im Query mitgeben.
    <!--#include virtual="header.shtml?DOCUMENT_NAME" -->
    haut leider nicht hin.
    Geht das überhaupt ?

    Ja, wenn auch wohl nicht so, wie du dir das denkst. Was hast du denn an http://de.selfhtml.org/servercgi/server/ssi.htm#variable nicht verstanden?

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hallo,

      ich möchte bei einem include virtual
      den Dateinamen im Query mitgeben.
      <!--#include virtual="header.shtml?DOCUMENT_NAME" -->
      haut leider nicht hin.
      Geht das überhaupt ?

      Ja, wenn auch wohl nicht so, wie du dir das denkst. Was hast du denn an http://de.selfhtml.org/servercgi/server/ssi.htm#variable nicht verstanden?

      Ich denke nicht, dass dort beschrieben wird wie er das machen kann. Er versucht ja nicht einen $QUERY_STRING abzufragen, sondern eines in <!--#include virtual="... " --> hineinzuschreiben.
      Und das wird wohl nicht gehen.

      Was mir jetzt einfällt ist ein:

      <!--#include virtual="header.shtml"-->
      <!--#set var="QUERY_STRING" value="$DOCUMENT_NAME"-->

      Aber ob das so klappt, glaube ich eher weniger.

      Besser wäre, er würde z.B. eine SSI-Variable setzen und im header.shtml diese dann abfragen und darauf reagieren:

      <!--#if expr="$blabla = blabla" -->
        ....
           <!--#elif expr="$blabla = blubb"-->
            .....
           <!--#else -->
             ....
      <!--#endif -->

      Grüße
      Thomas

      1. DANKE Euch Beiden!

        @ Christoph: Ich muss wohl mal meine Version 8.0 mit 8.11 updaten :))

        @ Thomas: Der Idee werd ich mal nachgehen. Da geht vielleicht was ...

        Besten Dank, Frank

      2. hallo,

        http://de.selfhtml.org/servercgi/server/ssi.htm#variable
        Ich denke nicht, dass dort beschrieben wird wie er das machen kann. Er versucht ja nicht einen $QUERY_STRING abzufragen, sondern eines in <!--#include virtual="... " --> hineinzuschreiben.
        Und das wird wohl nicht gehen.

        Richtig, _so_ geht es nicht

        Besser wäre, er würde z.B. eine SSI-Variable setzen
        <!--#if expr="$blabla = blabla" -->

        Und genau das steht auch an der angegebenen Stelle.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
        1. Hallo,

          Besser wäre, er würde z.B. eine SSI-Variable setzen
          <!--#if expr="$blabla = blabla" -->

          Und genau das steht auch an der angegebenen Stelle.

          Darüber können wir diskutieren, dort steht nämlich was anderes. ;-)

          Grüße
          Thomas

          1. hallo Thomas,

            <!--#if expr="$blabla = blabla" -->
            Und genau das steht auch an der angegebenen Stelle.
            Darüber können wir diskutieren, dort steht nämlich was anderes. ;-)

            Du versetzt mich in Staunen. Was ist denn an
              <!--#if expr="$QUERY_STRING = /test/" -->
            (wie es da steht) so anders als an deinem

            <!--#if expr="$blabla = blabla" -->

            Wie du weißt, ist der gesamte Absatz "Arbeiten mit Variablen" von mir neu geschrieben worden. Wenn du daran etwas fehlerhaft finden solltest, würde ich das schon gerne wissen wollen.

            Grüße aus Berlin

            Christoph S.

            --
            Visitenkarte
            ss:| zu:) ls:& fo:) va:) sh:| rl:|
            1. Hallo,

              <!--#if expr="$blabla = blabla" -->
              Und genau das steht auch an der angegebenen Stelle.
              Darüber können wir diskutieren, dort steht nämlich was anderes. ;-)

              Du versetzt mich in Staunen. Was ist denn an
                <!--#if expr="$QUERY_STRING = /test/" -->
              (wie es da steht) so anders als an deinem

              <!--#if expr="$blabla = blabla" -->

              Wie du weißt, ist der gesamte Absatz "Arbeiten mit Variablen" von mir neu geschrieben worden. Wenn du daran etwas fehlerhaft finden solltest, würde ich das schon gerne wissen wollen.

              Habe ich gesagt, dass dort was fehlerhaft ist!?
              Aber wenn du doch auf einen "Fehler" bestehst ;-) : in der Tabelle bei "#echo" fehlt "QUERY_STRING" (QUERY_STRING_UNESCAPED ist vorhanden).

              Was ich meinte ist, dass dort zwar ewas abgefragt wird, aber eben eine vorgegebende Umgebungsvariable (was Neulinge dazu verleiten kann, zu gluben, man kann nur solche Sachen abfragen) Und es geht dort aus dem Beispiel nicht heraus, dass man selbstdefinierte Variablen auch in anderen Seiten abfragen kann. Das ist keines Falls ein Fehler von dir, denn man kann nicht alle Eventualitäten beschreiben.

              Grüße
              Thomas

            2. Hell-O!

              Wie du weißt, ist der gesamte Absatz "Arbeiten mit Variablen" von mir neu geschrieben worden. Wenn du daran etwas fehlerhaft finden solltest, würde ich das schon gerne wissen wollen.

              Fehlerhaft ist m.E. nichts. Aber vielleicht sollte man etwas zum Thema Substitution von Variablen sagen (natürlich mit dem Hinweis, dass dies XSSI unter Apache voraussetzt).

              Siechfred

  2. Hell-O!

    ich möchte bei einem include virtual
    den Dateinamen im Query mitgeben.

    Das geht grundsätzlich schon.

    <!--#include virtual="header.shtml?DOCUMENT_NAME" -->
    haut leider nicht hin.

    Ja, weil du header.shtml den String "DOCUMENT_NAME" übergibst.

    <!--#include virtual="header.shtml?$ENV{'Script_NAME'}" -->
    und ähnliche Varianten wollen nicht klappen

    Solltest du Extended SSI verwenden (Apache erforderlich), sollte diese Variante durchaus funktionieren, wenn du sie richtig anwendest:

    <!--#include virtual="header.shtml?$DOCUMENT_NAME" -->

    Um von der Variablensubstitiution Gebrauch zu machen, musst du einfach die deklarierte Variable in doppelten Hochkommata nach dem Schema "$Variablenname" notieren. Das funktioniert mit jeder Variablen, also auch mit den vordefinierten Umgebungsvariablen.

    Geht das überhaupt ?

    Ja, du musst den Querystring in header.shtml natürlich auch auswerten, entweder in der Art, wie es Thomas schon beschrieben hat, du kannst ihn aber auch einfach nur mittels echo ausgeben lassen:

    <!--#echo var="QUERY_STRING" -->

    Beachte dabei bitte unbedingt, dass header.shtml ohne head und ohne body-Tags daherkommt, sonst ist dein Ergebnis ungültiges HTML. Ich habe mal eine kleine Demonstration hochgeladen.

    Siechfred