Dynamische Seiten

In aller Kürze…

Einbinden externer (dynamischer) Inhalte per

Der Imperia-Server ist ein Server für die Webseiten der gesamten Universität Heidelberg. Wir möchten deshalb vermeiden, dass beabsichtigt oder unbeabsichtigt Seiten von Imperia-Mitstreitern in Mitleidenschaft gezogen werden. Deshalb ist das Ausführung von Programmen auf dem Server verboten.

Einige Möglichkeiten stellen wir jedoch zur Verfügung, um dynamische Inhalte anbieten zu können. Dabei gehen wir davon aus, dass Sie über einen eigenen Webserver oder eine Domaine auf dem Webserver Inst-WWW verfügen, in dem Sie Ihre Programme laufen lassen können. Von dort aus ist es auch möglich, auf die Oracle-Datenbank des URZ oder eigene Datenbanken zugreifen zu können.

Dynamischen Inhalt in einer Iframe-Box ablaufen lassen

Der Nachteil: Frames sind nicht barrierefrei. Um die Barrierefreiheit herzustellen, sollten Sie mithilfe von Beschreibungen und/oder einem verlinkten Text dafür sorgen, dass die Inhalte auch erreichbar sind, falls der Frame nicht funktioniert oder auflösbar ist. Ein weiteres Problem sind Sperren auf dem entfernten Server, der es einfach nicht erlaubt, dass die Inhalte des entfernten Servers auf Ihrer Seite angezeigt werden. Das muss nicht etwa Unfreundlichkeit (z. B. Copyrightschutz) sein, sondern ist ein Sicherheitsfeature. Und noch ein Problem könnte die Komplexität sein. Dynamischer Inhalt kommuniziert ggf. mit dem entfernten Server und das kann dann in dem Iframe schlicht nicht funktionieren.

Weiterführende Links sollten in dem Inhalt nicht auftauchen. Der Browser wird dann die Links in der Box öffnen. Dies ist unschön und sehr schnell gesetzwidrig, da beim Einbinden von Inhalt der Copyright-Schutz massiv greift.

Beispiel einer Openstreetmap-Karte:

<p style="text-align:center">
    <iframe height="200px" 
            name="Karte" 
            src="https://www.öpnvkarte.de/#8.6836;49.4059;13" 
            title="ÖPNV in Heidelberg, Karte" width="500px">
  
            Iframe: ÖPNV in Heidelberg

    </iframe>
</p>

Um den query-string der HTML-Seite in den IFrame zu übertragen können Sie ?<!--#echo var="QUERY_STRING"--> verwenden. Also … src="http://…/pfad?<!--#echo var="QUERY_STRING"-->" …

Dynamischen Inhalt via Javascript einbinden

Im Template lassen sich Javascript-Dateien einbinden. Es empfiehlt sich aber den Text in einem Textfeld zu schreiben, da die ganze Imperia-Steuerung über Javascript abläuft und kleine Fehler sehr schnell dazu führen kann, dass das Dokument verloren ist, sich also nicht mehr bearbeiten lässt.

Ausführliche Dokumentation zur Verwendung von JQuery in Imperia.

Dynamischen Inhalt per SiteActive Scripting

Dynamische Inhalte können auch automatisch per SiteActive erzeugt werden. Diese Scripte werden vom Team-Online-Info erzeugt.

SiteActive kann auf bestimmte Ereignisse (Freischalten) reagiert und nimmt von der Seite einen sogenannten Teaser Text, dieser Text muss im Imperia-Dokument vorhanden sein, muss aber nicht auf der Seite angezeigt werden.

In den meisten Fällen schreibt man diese Teasertexte (von mehreren Dokumenten) dann in eine SSI Datei, damit man sie auf beliebigen Seiten per Include einbinden kann.

Dynamisch erzeugten Inhalt via SSI einbinden

Das via SSI ausführbare Programm remote.pl ermöglicht die Darstellung von Inhalten externer Seiten (z.B. die Ausgabe von CGI/PHP-Scripts auf anderen Servern) innerhalb von Imperia.

Das Programm fordert dazu via HTTP-GET/POST (ggf. mit Query-String) das entsprechende Dokument an, extrahiert dessen BODY-Bereich und bettet die Daten an der Stelle des SSI-Aufrufs in der Imperia-Seite ein. Ist die Seite nicht HTML-Valide (fehlt also insbes. der BODY-Tag), so wird alles eingezogen.

Aufruf:


<!--#include virtual="/cgi-bin/remote.pl? [--recode] [--content] [--get|--post] --url <URL>"-->

Optionen:


--recode: zur Umwandlung der Ausgabe von ISO-8859-15 in UTF-8 (optional)

--content: extrahiert statt dem BODY den Bereich <div id="content">...</div> (optional)

--url <URL>: die URL der anzufordernden Seite (ggf. mit Query-String)
--get ODER --post: Request-Methode (Übermittlung der Parameter im Query-String der URL)

Beispiel:


<!--#include virtual="/cgi-bin/remote.pl? --get --url http://foo.de/bar.php?var1=Hallo&var2=Welt"-->

Wichtige Hinweise und Hilfe bei Problemen:

  • Tritt der Fehler
    
    [An error occured while processing...]
    auf, konnte der Webserver das Programm nicht finden oder aufrufen. Bitte überprüfen Sie noch einmal die Syntax Ihres SSI-Aufrufs.
  • Damit das Programm eine korrekte Ausgabe liefern kann, muss die angeforderte Seite natürlich auch selbst korrektes HTML liefern. Insbesondere muss exakt ein öffnendes und ein schließendes BODY-Tag vorhanden sein, damit der BODY-Bereich aus dem Dokument extrahiert werden kann.
  • Der Technik sind natürlich gewisse Grenzen gesetzt - enthält die angeforderte Seite Hyperlinks, müssen diese absolut sein, da die Ziele relativer Links i.d.R. nicht auf dem Imperia-Server liegen.
  • Bei der Fehlersuche kann beim Aufruf des Programms der Parameter --debug hilfreich sein, der zusätzliche Informationen liefert.
  • Falls Sie auf der dynamisch erzeugten Seite ein Datum angeben wollen, dann sollten Sie folgendes statt change in das Datumsfeld schreiben:
    
    <!--#config timefmt="%d.%m.%Y" --><!--#echo var="DATE_LOCAL" -->
    
    
    Damit wird das aktuelle Datum in der richtigen Formatierung eingefügt.
  • Falls Sie den query-string der Seite selbst weiterleiten möchten, so können sie einfach $QUERY_STRING verwenden. Beispiel: <!--#include virtual="/cgi-bin/remote.pl? --get --url https://veranstaltungskalender.urz.uni-heidelberg.de/uni_hd_kalender.php?$QUERY_STRING"-->
Verantwortlich: Website-Services
Letzte Änderung: 07.12.2021
zum Seitenanfang/up