Wrapper - mit autoWrapper

Plugin für CMSimple

Version 2.4 beta 1 (27th April 2009)

Example 1
Wrapper bei der Arbeit

Example 2
autoWrapper bei der Arbeit


Ein Wrapper ist eigentlich nichts anderes als ein iFrame. Mit diesem Wrapper ist es möglich, externe, Server-ferne oder Server-eigene Internetsites (wie Foren, Gallerien etc.) in die von CMSimple erstellte Website einzubauen. Durch das Verwenden eines Wrappers ändert sich die Menüführung und der Aufbau einer CMSimple Seite durch die Einbindung einer externen Seite nicht

Dieser Wrapper kommt mit zwei Funktionen, der normalen Wrap-Funktion sowie einer autoWrap-Funktion.

(a) Die normal Wrap-Funktion ist dafür gedacht, Server-ferne Website einzubauen - also solche externen Websites, die einer anderen als der eigenen Domain zugehörig sind.

(b)+(c) Die autoWrap-Funktion ermöglicht eine flexible Höhe des iFrames, sodass kein vertikaler Scrollbalken stört. Diese Funktion ist zur Einbindung nur solcher externen Sites geeignet, die - wie eigene Shops, Foren etc. - auf der eigenen Domain present sind. Sites fremder Domainen (wie z.B. die Google-Domain) können hiermit nicht eingebunden werden!!!!

Realisiert wurde die autoWrap-Funktion mit dem IFrame SSI Skript II von Dynamic Drive (b) sowie als Alternative von John Davenport Scheuer aus dem Dynamic Drive Forum (c). Welches der beiden Skripte, (b) oder (c), sich für den Einzelnen besser verhalten, muss jeder für sich testen. Das Skript von John Scheuer ist zumindest neuer und und komplett reprogrammiert.

 

1. Installation

Nach dem Entpacken wird das Plugin in den Unterordner "plugins" kopiert. In der Administration des "Wrappers" können nur zwei Knöpfe zur Konfiguration des Plugins gefunden werden: "Plugin-Stylesheet" und "Plugin-Hilfe". In "Plugin-Stylesheet" lassen sich das Aussehen, das Erscheinungsbild und die Maße der einzubindenen Website bzw. Webseite konfigurieren. Die "Plugin-Hilfe" enthält diese Hilfe-Seite.

Um nun den Wrapper in einer CMSimple Seite per CMSimple-Skript einzubinden, wird folgendes Format verwendet:

(a) Für Domain-ferne Websites:

#CMSimple $output . = wrap($Url, $width, $height, $scrolling, $allowtransparency, $gettxt, $errtxt);#

oder

(b) Für Domain-eigene Websites:

#CMSimple $output . = autowrap($Url, $width, $height, $scrolling, $allowtransparency, $gettxt, $errtxt);#

bzw.

(c) Neu: als Alternative für Domain-eigene Websites:

#CMSimple $output . = autowrap2($Url, $width, $height, $scrolling, $allowtransparency, $gettxt, $errtxt);#

Statt:
$Url - wird die Internet Adresse der einzubindenden Seite eingegeben.
$width - wird die Breite des iFrames eingegeben (in px oder %).
$height - wird die Höhe des iFrames eingegeben (in px).
$scrolling - wird der Wunsach nach Scrollbars geäußert (yes|no|auto).
$allowtransparency - wird die Microsoft proprietäre Eigenschaft der Hintergrundtransparenz zugeschaltet (true|false), nur wichtig für den IE6.
$gettxt - wird der Text eingegeben, der während des Ladens der externen Seite angezeigt werden soll. Statt Text können aber auch Bildadressen in Form von HTML Kode eingegeben werden.
$errtxt - wird der Text eingegeben, wenn die zu ladende Seite nicht gefunden wird.

Zur Einbindung von Google, wie es etwa in der oberen Abbildung gezeigt ist, wurde folgender Kode verwendet:

#CMSimple $output.= wrap("http://www.google.de", "100%", "500", "auto", "true", "Seite wird geladen", "Seite konnte nicht gefunden werden");#

Zur Einbindung des Quick.Cart Shops, wie es in der unteren Abbildung gezeigt ist, wurde folgender Kode verwendet:

#CMSimple $output.= autowrap("./shop/index.php", "100%", "500", "auto", "true", "Seite wird geladen", "Seite konnte nicht gefunden werden");#

bzw.

#CMSimple $output.= autowrap2("./shop/index.php", "100%", "500", "auto", "true", "Seite wird geladen", "Seite konnte nicht gefunden werden");#

Auch für den autoWrapper müssen Höhe und Skrolling-Eigenschaften definiert werden, weil der autoWrapper - selbst ein Javascript - auch als normaler Wrapper in einem "Non-Skript-Bereich" laufen kann. Also sollte man testen, wie der autoWrapper aussieht, wenn Javascript abgeschaltet ist!!!

Im Skript müssen immer alle Attribute angegeben werden. Sonst läuft es evtl. nicht richtig. Wenn dennoch ein Attribut nicht benötigt wird, werden einfach leere Anführungszeichen verwendet - wie z.B.: #CMSimple $output.= wrap("http://www.google.de", "100%", "500", "auto", "", "Seite wird geladen", "Seite konnte nicht gefunden werden");#

Selbstverständlich lässt sich der Wrapper mehrfach auf einer Site benutzen.

Tipps

a.
Wenn während des Ladens der externen Website statt eines Textes ein Bild gezeigt werden soll, kann man das folgendermaßen aufrufen:
#CMSimple $output.= wrap("http://www.google.de", "100%", "500", "auto","true", "<img src='plugins/wrapper/images/loading.gif'> ", "Seite konnte nicht gefunden werden");#
Eine Bilddatei namens "loading.gif" kann im Wrapper Plugin im Unterverzeichnis "/images" gefunden werden.

b.
In bestimmten Fällen scheint der Firefox falsche Höhenangaben an den autoWrapper zu übergeben. Dann erscheint trotzdem ein vertikaler Scrollbalken. Dieser lässt sich aber durch Fein-Tuning aus dem Weg räumen. In der Zeile 71 der index.php Datei des Wrappers heißt es:
$hjs.= "var FFextraHeight=getFFVersion>=0.1? 16 : 0 \n";Wenn man die letzte "0" mit einer höheren Zahl ersetzt, vergrößert sich auch die Höhe des iFrames im FF um dieselbe Pixel-Anzahl.
$hjs.= "var FFextraHeight=getFFVersion>=0.1? 16 : 50 \n";
würde als das iFrame Fenster im FF um 50 Pixel erhöhen. Der Scrollbalken verschwindet. Diese 50 Pixel gehen in die weiteren Höhenkalkulationen des Wrappers mit ein.

c.
Der autoWrapper ist auf "scrolling="no"" eingestellt. Es kann aber sein, dass während des Seitenwechsels innerhalb des iFrames nicht nur die Höhe, sondern auch die Breite variiert. Während die Höhe automatisch angeglichen wird, wird die Breite immer nur auf 100$ des vom Template angebotenen Platzes berücksichtigt. Sollte auch hier eine Breite berücksichtigt werden, die das Ausmaß des Templates übersteigt, müsste ein horizontaler Scrollbalken angeboten werden. Um das zu realisieren ändert man in Zeile 131 der index.php Datei des Wrapper Plugins die Scrolling-Angabe auf: scrolling=\"auto\".

d.
Beide autowrap Funktionen sind Javascripte. Es hat sich nun gezeigt (April 2009), dass der Internet Explorer 8 Probleme mit diesen Funktionen haben kann, sobald Javascripte anderer Plugins (z.B. lightbox etc.) eingebunden werden. Die autosize() Funktion streikt hierbei. Das kann umgangen werden, indem man die Javascripte im Template vor der head() Funktion einbaut.

 

2. Haftungs-Ausschluss

Dieses Plugin unterliegt keiner Garantie. Jeder Benutzer verwendet das Wrapper Plugin auf eigene Gefahr. Falls es zu Verlusten von Daten durch den Wrapper kommen sollte, unterliegen wir keiner Haftung.

 

3. Danksagung

Der Kode des Wrappers stammt ursprünglich von Rolf Amfelt (alf149) und war als Addon konzipiert (siehe: CMSimple Forum).

© Tillman Schuster, NMuD, 2007 - 2009.