Beispiele SSI

Bekommen zu den Gründen begonnen, die mich dazu veranlasst, diesen Artikel zu schreiben: In den Diskussionen Mitglieder des Allrussischen Club of Webmaster mal dort Streitigkeiten über waren, ob es besser ist, zu verwenden, falls der das Markup (Informationen) auf einer großen Anzahl von Seiten zu wiederholen - Frames, JavaScript oder SSI (Server Side Includes). Meine tiefe Überzeugung ist, dass Rahmen sollten nur dort, wo verwendet werden, ohne dass es wirklich nicht tun kann, JavaScript (ja, und alle anderen Client-Skripte) zu launisch und hängen von Ihren Browser-Einstellungen, so dass es nur für erweiterte Funktionen verwendet werden, aber in keiner Weise zu prostroeniya, beispielsweise das Navigationssystem. Ich werde nicht Schaum vor dem Mund, dass die Technologie SSI meisten abrupt Berge und Eier zu beweisen, sondern einfach die Lösung von gemeinsamen praktischen Probleme geben mit dem Einsatz dieser Technologie.

voraussehen (sofort Empörung auf Seiten der Anhänger von ASP und PHP-Technologien mit dem Einsatz von denen auch möglich ist, solche Probleme zu lösen, so dass für sie: SSI-Technologie ist viel einfacher, mit nur einem Dutzend Operationen, so dass keine Programmierung ist eine bessere Wahl, wenn auch nur, weil das es kann schnell gemeistert werden)

Datum der letzten Änderung des Dokuments

Eine einfache Richtlinie:

  <! - # Echo var = "LAST_MODIFIED" -> 

Heutigen Nummer in das richtige Format

Wenn wir das Datum angezeigt werden soll ist in der Standardkonfiguration der Software Form nicht, und was wir brauchen (zum Beispiel "Tuesday, 30. Mai 2000"), können Sie den folgenden Aufbau verwenden: Vorbereitung Tag der Woche

  <! - # Config timefmt = "% u" ->
 <! - # Set var = "NUM_DAY" value = "$ DATE_LOCAL" ->
 <! - # Wenn ausdr = "$ NUM_DAY = 1" ->
 <! - # Set var = "TAG" value = "Montag" ->
 <! - # Elif ausdr = "$ NUM_DAY = 2" ->
 <! - # Set var = "TAG" value = "Dienstag" ->
 <! - # Elif ausdr = "$ NUM_DAY = 3" ->
 <! - # Set var = "TAG" value = "Medium" ->

 <! - # Elif ausdr = "$ NUM_DAY = 4" ->
 <! - # Set var = "TAG" value = "Donnerstag" ->
 <! - # Elif ausdr = "$ NUM_DAY = 5" ->
 <! - # Set var = "TAG" value = "Freitag" ->
 <! - # Elif ausdr = "$ NUM_DAY = 6" ->
 <! - # Set var = "TAG" value = "Samstag" ->
 <! - # Else ->
 <! - # Set var = "TAG" value = "Sonntag" ->
 <! - # Endif -> 

Herstellung von

  <! - # Config timefmt = "% e" ->
 <! - # Set var = "DATE" value = "$ DATE_LOCAL" -> 

Erhalten Monatsname

  <! - # Config timefmt = "% m" ->
 <! - # Set var = "NUM_MONTH" value = "$ DATE_LOCAL" ->
 <! - # Wenn ausdr = "$ NUM_MONTH = 01" ->
 <! - # Set var = "MONAT" value = "Januar" ->
 <! - # Elif ausdr = "$ NUM_MONTH = 02" ->

 <! - # Set var = "MONAT" value = "Februar" ->
 <! - # Elif ausdr = "$ NUM_MONTH = 03" ->
 <! - # Set var = "MONAT" value = "March" ->
 <! - # Elif ausdr = "$ NUM_MONTH = 04" ->
 <! - # Set var = "MONAT" value = "April" ->
 <! - # Elif ausdr = "$ NUM_MONTH = 05" ->
 <! - # Set var = "MONAT" value = "May" ->
 <! - # Elif ausdr = "$ NUM_MONTH = 06" ->
 <! - # Set var = "MONAT" value = "June" ->

 <! - # Elif ausdr = "$ NUM_MONTH = 07" ->
 <! - # Set var = "MONAT" value = "Juli" ->
 <! - # Elif ausdr = "$ NUM_MONTH = 08" ->
 <! - # Set var = "MONAT" value = "August" ->
 <! - # Elif ausdr = "$ NUM_MONTH = 09" ->
 <! - # Set var = "MONAT" value = "September" ->
 <! - # Elif ausdr = "$ NUM_MONTH = 10" ->
 <! - # Set var = "MONAT" value = "October" ->
 <! - # Elif ausdr = "$ NUM_MONTH = 11" ->

 <! - # Set var = "MONAT" value = "November" ->
 <! - # Else ->
 <! - # Set var = "MONAT" value = "December" ->
 <! - # Endif -> 

Produktionsjahr

  <! - # Config timefmt = "% G" ->
 <! - # Set var = "YEAR" value = "$ DATE_LOCAL" -> 

Eigene Schlussfolgerungen String resultierende

  <! - # Echo var = "DAY" ->,

 <! - # Echo var = "DATE" ->
 <! - # Echo var = "MONAT" ->,
 <! - # Echo var = "YEAR" ->

Format-Optionen für config-timefmt notwendig aussehen separat für jede Konfiguration Web-Server. Dieses Beispiel - FreeBSD, Apache. Für weitere Details zu sehen. Man timefmt
Dieser Entwurf wird auf der Online - Shop-Website verwendet Levingston.Ru

Datum geändert externe Datei

Oft auf Computer-Websites verbreiten Preisliste in MS Excel oder Word-Format, und jedes Mal die Hände Tag seiner Herstellung vorgeschrieben. Mit SSI wird wie folgt durchgeführt:

  <a href=pricelst.doc> Preisliste </a>

 <! - # Config timefmt = "% d% m% y .." ->
 (MS Word 6.0 / 95, <! - # Flastmod virtual = "pricelst.doc" ->) 

Dieser Entwurf wird auf der Unternehmens-Website verwendet Duncan - Service

Kampf <noframes>

Typischerweise wird der Behälter schreibt: "Es tut mir leid, aber Sie sollten Ihren Browser aktualisieren", ist die Idee, es sollte für Anwender älterer Versionen von Browsern eine Alternative sein. Da der normale ändert Serverinformationen häufig, und die faulen Webmaster jedes Mal, um Änderungen an zwei Orten zu machen. Mit SSI Problem ein für alle Mal in einem Behälter gelöst <noframes> </ noframes> Richtlinie trat, legen Sie die gleiche Datei, in der Änderungen vorgenommen werden, oder einfach nur die Navigationsleiste.

Kampf mit direkten Links zu den Dokumenten auf einem gerahmten Website

Eines der Argumente gegen die Verwendung von Rahmenstrukturen mit der Erstellung von Web-Sites ist die Unannehmlichkeiten der direkten Links zu Content-Dateien. Zum Beispiel, wenn der Link von den Suchmaschinen, oder zu einem bestimmten (nicht-root) Dokument von einer anderen Website, wird der Benutzer auf eine Seite ohne Design oder Navigationselemente genommen, die in der Regel in einem separaten Navigationsrahmen platziert werden. Mit einem einfachen Design kann SSI dieses Problem zu lösen. Dazu ist es notwendig zu analysieren, wo der Benutzer kam (Variable HTTP_REFERER) Wenn er nicht mit unserem Server kam, und nach außen - eine rahmenbasierte Struktur und Ersatzdokument durch den Benutzer als einen sinnvollen Rahmen angefordert zu bauen.

Im Beispiel unten content.html Datei - das ist das Dokument, das eine direkte Verbindung (zum Beispiel von einer Suchmaschine), frame.html - die Datei, in der die Struktur der Rahmenkonstruktion. Der QUERY_STRING Wert ist, um zu vermeiden, unendliche Verschachtelung Rahmenstrukturen getan ersetzt.

content.html Datei

  <Html>
 <Head>
 ...
 <! - # Include virtual = "frame.html" ->
 </ Head>
 <Body>

 ...
 </ Body>
 </ Html> 

frame.html Datei

  <! - # Wenn ausdr = "!! $ QUERY_STRING = getan && $ HTTP_REFERER = / your_domain \ .ru /" ->
 <Frameset rows = "150 *">
 <Frame name = "NAVIGATION" src = "/ navigation.html">
 <Frame name = "CONTENT" src = "<! - # Echo var =" DOCUMENT_URI "-> fertig?">

 </ Frameset>
 <! - # Endif -> 

Dieser Entwurf wird auf der Online - Shop-Website verwendet Bolero

Druckversion der Seite

Oft gibt es ein Anwendungsproblem - eine schöne mehrspaltigen Design mit den oberen und unteren Kappen, Banner Wolke, aber wenn alles zu drucken, braucht nicht - extra Papier, unnötige Informationen ... Sie wollen also eine einfache alternative Ansicht Seiten, die speziell für den Druck zu machen. Um dies zu tun, ist es ausreichend, zwei Versionen der oberen und unteren Kappen vorzubereiten, ein --für Screen-Display, das andere - zu drucken. Als Schalter zwischen diesen Optionen verwenden, um eine Variable QUERY_STRING. Im Folgenden sind die Grundstruktur für die Seite selbst (file.html) für den oberen und unteren Kappen (top.html und bottom.html).

Die Struktur der Seite selbst (file.html):

  <! - # Include virtual = "top.html $ QUERY_STRING?" ->
 Hier ist der Körper des Dokuments
 <! - # Include virtual = "bottom.html $ QUERY_STRING?" -> 

Struktur und top.html bottom.html

  <! - # Wenn ausdr = "$ QUERY_STRING == / for_printing /" ->
 Hat drucken
 <! - # Else ->
 Kappe für die Anzeige
 <! - # Endif -> 

Ein Link auf jeder Seite muss von der Form

  <a href=<"!--echo var="$DOCUMENT_URI" -->? for_printing
 > Druckversion </a> 

Dieser Entwurf wird auf die Website verwendet wird von All-Russian Club of Webmaster

Kampf mit Menüpunkte

Angenommen, wir ein paar Abschnitte einer Website haben, die Dokumente im Zusammenhang mit den Abschnitten in unterschiedlichen Verzeichnissen. Die Aufgabe -, um sicherzustellen, dass das Navigationsmenü auf diesen Abschnitten verloren war (oder nicht beleuchtet ist, eine andere Farbe, etc.) ein Verweis auf den Abschnitt, in dem der Benutzer gerade befindet. Sie können variable DOCUMENT_URI verwenden.

  <! - # Wenn ausdr = "$ DOCUMENT_URI = / ^ \ / index.html /!" ->
 <a href="/"> Startseite </a> <br>
 <! - # Endif ->

 <! - # Wenn ausdr = "$ DOCUMENT_URI = / \ / über \ /index.html/!" ->
 <a href="/about/"> Über </a> <br>
 <! - # Endif ->
 <! - # Wenn ausdr = "$ DOCUMENT_URI = / \ / done \ /index.html/!" ->
 <a href="/done/"> Unsere Arbeit </a> <br>
 <! - # Endif ->

 <! - # Wenn ausdr = "$ DOCUMENT_URI = / \ / Partner \ /index.html/!" ->
 <a href="/partner/"> Unsere Partner </a> <br>
 <! - # Endif ->
 <! - # Wenn ausdr = "$ DOCUMENT_URI = / \ / client \ /index.html/!" ->
 <a href="/client/"> Unsere Kunden </a> <br>
 <! - # Endif ->

 <! - # Wenn ausdr = "$ DOCUMENT_URI = / \ / Preis \ /index.html/!" ->
 <a href="/price/"> Unsere Preise </a> <br>
 <! - # Endif ->
 <! - # Wenn ausdr = "$ DOCUMENT_URI = / \ / Kontakte \ /index.html/!" ->
 <a href="/contacts/"> Unsere Lage </a> <br>
 <! - # Endif ->

 <! - # Wenn ausdr = "$ DOCUMENT_URI = / \ / Geschichte \ /index.html/!" ->
 <a href="/history/"> Unsere Geschichte </a> <br>
 <! - # Endif ->
 <! - # Wenn ausdr = "$ DOCUMENT_URI = / \ / search.html /!" ->
 <a href="/search.html"> Suche </a> <br>
 <! - # Endif -> 

Dieser Entwurf verwendet auf der Website des Unternehmens Web 2000

Kontexttextausgabe in Abhängigkeit von den Bedingungen

Angenommen, wir haben eine Aufgabe, um das Aussehen des ersten Knotens der Seite zu ändern, je nachdem, wo der Benutzer kam. Der folgende Aufbau wird verwendet, um dieses Ziel zu erreichen:

  <! - # Wenn ausdr = "$ HTTP_REFERER = / www.zzz.ru /" ->
 Hier sind die notwendigen Maßnahmen gemacht
 <! - # Endif -> 

dh im Vergleich zu der Variablen HTTP_REFERER

Kämpfen mit verschiedenen Versionen des Designs für verschiedene Browser

Jeder weiß, dass die Browser von verschiedenen Anbietern und verschiedenen Versionen zeigen die gleiche HTML-Markup-Dokument aus den Spezial-Tags und Attribute, und endet die Unterstützung für verschiedene Versionen von JavaScript. Um eine Website zu machen für eine Version des Browsers für den anderen gut aussehen, oder nicht gefallen JavaScript-Fehler SSI bedeutet, dass Sie eine Zuverlässigkeitsüberprüfung Versionen oder Browser tun können, und verschiedene Optionen für die HTML-Markup bieten. Wir analysierten die Variable HTTP_USER_AGENT, die Informationen über die Art und den Hersteller Ihres Browsers enthält:

  <! - # Wenn ausdr = "$ HTTP_USER_AGENT = / Mozilla \ / 4 / || $ HTTP_USER_AGENT = / Mozilla \ / 5 /" ->
 Wenn die Version des Browsers ist kein 4 oder 5, dann Ausgabeoption
 Design, beispielsweise unter Verwendung, DHTML
 <! - # Else ->
 Es ableiten einfaches Design
 <! - # Endif ->

Dieser Entwurf ist für den Bau von Rahmenstruktur und dem Ausgang des internen Menüs verwendet (für Netscape - auf DHTML, für MSIE - auf ActiveX) Website , "Om" -Magazin

Kampf mit der Registrierung der Ergebnisse von Skripten

Das größte Problem bei der Skript ist, dass, wenn es eine große Menge an akkumulierten Software ist - erforderlich sind, wenn die Gestaltung ihrer Migration zu verändern. Nun, wenn die Software richtig gemacht wird und die Änderung der Anzeigemuster der Mathematik gilt nicht, aber, und in solchen Fällen gibt es Probleme. Zum Beispiel würde eine Suchseite eine gute Idee zu drehen Banner und Werbenetzwerke, aber nicht SSI-Direktiven werden in den cgi-Dateien verarbeitet. So - kein Skript Mapping-Vorlagen zu bearbeiten, und das Skript des HTML-Dokuments durch SSI zu verursachen (variable CONTENT_LENGTH nicht im SSI leider so können Sie nur mit den Skripten arbeiten, die die GET-Methode verwenden): Um solche Probleme zu lösen, können Sie SSI verwenden wie folgt wie es dort HTML-Dokument, das Ihnen in der gesamten Design-Stil geprägt ist. Es wird in die Richtlinie eingefügt

  <! - # Include virtual = "/ cgi-bin / script.cgi $ QUERY_STRING?" -> 

Im ersten Schritt, bis QUERY_STRING leer ist - ist der erste Schritt, das Skript für die nächsten Schritte im Skript - die notwendigen Parameter übergeben werden. In den Skript drei wichtige Linien:

  ...
 # Definition von Adressen, in denen Daten zu senden
 $ Query = $ ENV {QUERY_STRING};
 # Definition der Ort, von dem das Skript aufgerufen wurde
 $ Uri = $ ENV {DOCUMENT_URI};
 ...
 # Senden von Daten auf der gleichen HTML-Dokument, aus dem das Skript aufgerufen wurde
 print "<form action = $ uri method = get> \ n";
 ... 

Dieser Entwurf wird im Abschnitt verwendet "Vote" für Online - Supermarkt Levingston.Ru

Was kann mit dem Cookie-und SSI erfolgen

Design in JavaScript häufig, dass Displays gefunden: "Hallo, Iwan Iwanowitsch!" bei der Eingabe der Web-Site-Seite. Das gleiche kann mit Hilfe von SSI Richtlinie erfolgen

  <! - # Echo var = "HTTP_COOKIE" -> 

Banner, Caching und SSI

Sent Cyril Khlopov (NewTech)

Wie bekannt ist, bieten Bannersysteme einen Code von einem gewissen Zufallsvariable enthalten in der URL das Skript angezeigt werden - aus dem Cache-Schutz.

  • Sie können eine ganzseitige Skript, vom ersten bis zum letzten Zeichen erzeugen
  • Sie können als beraten Hilfeseite Bannersysteme tun - sind von SSI Skript generyaschy zufällige Banner
  • Dynamische Aufzeichnung des Dokuments mit dem Code Banner JavaScrip-ten

Und Sie können diese immer noch gerne:

  <! - # Config timefmt = "% s" ->

 <! - # Set var = "RND" value = "$ DATE_LOCAL" ->
 <! - Russisch Linkexchange Code START ->
 <Iframe src = http :? //www.linkexchange.ru/cgi-bin/erle.cgi Some_id?
 <! - # Echo var = "RND" ->
 frameborder = 0 vspace = 0 hspace = 0 width = 468 height = 60 marginwidth = 0
  margin = 0 scrolling = no>
 <a href=http://www.linkexchange.ru/users/some_id/goto.map target=_top>
 <Img src = http :! //www.linkexchange.ru/cgi-bin/rle.cgi ?? <! - # Echo var = "RND" ->
 alt = "RLE Banner Network" border = 0 height = 60 width = 468> </a>

 </ Iframe>
 <! - Russian Linkexchange Code END -> 

Das heißt, als eine Zufallsvariable eine Anzahl von Sekunden des Jahres 1970 durchführen wird. vergeuden Zeit und Speicher nicht den Generator Skript, Java-Script ausführen (bei einigen Benutzern jetzt ist es in Mode) kann ausgeschaltet werden. Meiner Meinung nach recht rosig Lächeln glücklich
All dies wurde von unserem Administrator geprüft und verwendet worden www.j2.ru

Ein Anzeigemuster - unterschiedliche Inhalte

Hochgeladen von Evgeny Bespalchikov (KADIS)

Vorlagen werden oft auf diese Weise verwendet: <> Es gibt nur eine Datei ist, die die Struktur der Seite beschreibt, und die wichtigsten Inhalte umfassen Richtlinie

  <! - # Include virtual = "$ QUERY_STRING.html" -> 
Links bzw. wird, sein:
  href = "www.your_domain.ru/index.html?page1"
 href = "www.your_domain.ru/index.html?page2"
 ... 

Das Problem tritt auf, wenn ein Benutzer die Adresse direkt http://www.your_domain.ru, dh QUERY_STRING = ""

Lösung:

  <! - # Wenn ausdr = "$ QUERY_STRING" ->
 <! - # Include virtual = "$ QUERY_STRING.html" ->
 <! - # Else ->
 <! - # Include virtual = "default.html" ->

 <! - # Endif -> 

wo default.html - Stammseite des Indexes (TOC) und einem Stecker.