Wir implementieren abschließend noch die Anzeige der Galerie als
Linkliste. Zur Erinnerung: Setzt der Redakteur das Feld
ip_galleryAsLinks (Galerie als Linkliste?) auf
yes (In der Vorlage wurde no voreingestellt), soll
der Besucher keine Bilder sehen, sondern Verweise darauf. Klickt er einen
solchen Bilderlink an, soll das Bild wieder in einem separaten Fenster
geöffnet werden.
Diese Funktionalität lässt sich ebenfalls im Sublayout
SUBL_imageGallery realisieren, am besten mit einer
condition-Anweisung, in der der Wert des Feldes
ip_galleryAsLinks darüber entscheidet, ob eine Tabelle mit
Bildern (den Code haben wir jetzt) oder die Linkliste angezeigt wird. Hier
das Gerüst:
<npsobj condition="isEqual" name1="context.ip_galleryAsLinks" value2="yes"> <!-- Zeige Bilder als Linkliste an --> </npsobj> <npsobj condition="isNotEqual" name1="context.ip_galleryAsLinks" value2="yes"> <!-- Zeige Bilder in Tabelle an --> </npsobj>
Wir verzichten bewusst darauf, im zweiten Abschnitt des obigen Gerüsts
ip_galleryAsLinks auf no zu testen, sondern prüfen
ersatzweise, ob er nicht yes ist. Dadurch wird die Tabelle auch
dann angezeigt, wenn der Wert von ip_galleryAsLinks versehentlich
gelöscht wurde.
Zur Abfrage des Feldes benötigen wir den Präfix context, weil
die condition-Anweisung innerhalb der Anweisung
list="ip_galleryFolders", also im Kontext eines Links
ausgewertet wird. context steigt einen Kontext weiter auf, in diesem Fall zur
gerade exportieren Datei, also der Bildergalerie – und genau diese
enthält ja das Feld ip_galleryAsLinks.
Das komplette Sublayout sieht jetzt so aus:
<script type="text/javascript">
function OpenWindow(address) {
ImgWindow = window.open(address,"poster","width=150,height=200,left=650,top=100");
ImgWindow.focus();
}
</script>
<npsobj list="ip_galleryFolders">
<npsobj modifyvar="clear" varname="images" />
<npsobj list="destination.children">
<npsobj condition="isEqual" name1="objType" value2="image">
<npsobj modifyvar="append" varname="images" name="self" />
</npsobj>
</npsobj>
<npsobj condition="isEqual" name1="context.ip_galleryAsLinks" value2="yes">
<ul>
<npsobj list="images">
<!-- Pfad des Bildes in der Export-Variablen imgurl speichern.
Bitte aus den folgenden 3 Zeilen die Umbrüche entfernen! -->
<npsobj modifyvar="set" varname="imgurl">
<npsobj insertvalue="var" name="urlPrefix" /><npsobj insertvalue="var" name="visiblePath" />
</npsobj>
<a href="@imgurl" onclick="OpenWindow(this.href); return false">
<li><npsobj insertvalue="var" name="title" /></li>
</a>
</npsobj>
</ul>
</npsobj>
<npsobj condition="isNotEqual" name1="context.ip_galleryAsLinks" value2="yes">
<npsobj table="images" columns="3">
<!-- Pfad des Bildes in der Export-Variablen imgurl speichern.
Bitte aus den folgenden 3 Zeilen die Umbrüche entfernen! -->
<npsobj modifyvar="set" varname="imgurl">
<npsobj insertvalue="var" name="urlPrefix" /><npsobj insertvalue="var" name="visiblePath" />
</npsobj>
<a href="@imgurl" onclick="OpenWindow(this.href); return false">
<npsobj insertvalue="image" name="self" width="80" title="@self.title" />
</a>
</npsobj>
</npsobj>
</npsobj>Die erste – für die Linkliste zuständige – condition-Anweisung
hat fast den gleichen Inhalt wie die zweite. Die einzigen Unterschiede sind
die ul- und li-Elemente sowie die
insertvalue="var"-Anweisung innerhalb des
a-Elements. Letztere gibt den Titel des Bildes (als verlinkten Text) aus.
Da der Hauptinhalt der Bildergalerie-Seite sich noch auf die Bildertabelle
bezieht, sollten Sie ihn so ändern, dass er auch zur Linkliste passt. Stellen
Sie dann noch das Feld ip_galleryAsLinks auf yes um und
sehen Sie sich das Resultat Ihrer Arbeit in der Vorschau an:
