Tags:
Folgene Tags/Schlagwörter wurden diesem Beitrag zugeordnet: »About 72quadrat, wordpress«.
Erst neulich wurde ich per Mail gefragt, wie ich bei meinen vergrößerten Bildern diese netten [mehr]-Links eingebaut habe. Nun, für diejenigen die vielleicht wie ich in meinem Photo-Bereich das Plugin Flickr Photo Gallery von Joe Tan für WordPress verwenden, will ich da gern einmal kurz zeigen wie’s funktioniert. Genau dieselbe Geschichte habe ich auch an anderer Stelle meines Weblogs benutzt. Die Bilder meiner Beiträge werden zu 90% durch das (inzwischen etwas in die Jahre gekommene) Plugin Exhibit dargestellt, und auch hier will ich kurz zeigen wie man das hinbekommen könnte.
Die Flickr-Bildergalerie auf meine Homepage ist inzwischen verschwunden da das Plugin einfach nur noch MISERABEL funktioniert und mich zu tode nervt.
Die Darstellung der vergrößerten Bildansicht wird bei meinem Blog – wie auch bei einigen anderen – durch das wunderbare Lightbox 2 Script erzeugt. Diesem Script ist es ja möglich einem Bild eine Bildbeschreibungszeile zu gönnen. Genau diese Zeile verwende ich um den Link darzustellen. Auch die Frage ob Links in dieser Unterzeile wurde auf der Seite von Lightbox 2 (etwas weiter unten) gestellt und beantwortet:
Can I insert links in the caption?
Yes, but you need to convert quotes and greater and less than symbols into their html entity equivalents. For example:
<a href=»images/image-4.jpg« rel=»lightbox« title=«<a href="link.html">my link</a>«>Image</a>
Wenn das Lightbox-Script wie auf der Website beschrieben korrekt installiert wurde und es durch beispielsweise folgende Zeilen geladen wurde:
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
So wird das Script durch einen einfachen Link gestartet mit entsprechend gesetztem Tag rel="lightbox" in dem Link-Tag gestartet. Will man mehrere Bilder als Gruppe darstellen und auch durch die Bilder blättern können, so kommt einfach eine eindeutige Albenbeschreibung in eckigen Klammern hinzu: rel="lightbox[album1]".
Bei einer Reihe von drei Bildern würde das also so ausschauen:
<a href="images/image-1.jpg" rel="lightbox[album1]">thumbnailimage #1</a>
<a href="images/image-2.jpg" rel="lightbox[album1]">thumbnailimage #2</a>
<a href="images/image-2.jpg" rel="lightbox[album1]">thumbnailimage #3</a>
Die Bildbeschreibung einfügen
Um nun zu einem Bild eine Bildunterschrift anzuzeigen fügt man noch einen weitere Kleinigkeit dem Link-Tag hinzu: Das Title-Element.
Ein Link würde also inkl. der Bildunterschrift folgendermaßen ausschauen:
<a href="images/image-1.jpg" rel="lightbox[album1]" title="Bildunterschrift">thumbnailimage #1</a>
So. Nun haben wir wunderbar einfach Bildunterschriften eingefügt, und wie in der FAQ-Frage auf der Lightbox2 Website unter der Frage »Can I insert links in the caption?« schon kurz beantwortet wurde, ist es natürlich auch möglich Links in diese Bildunterschrift zu packen.
Man könnte zunächst meinen, daß man einfach einen Link wie z.B. <a href="http://www.meinlink.de">Link</a> einfach in die Title-Geschichte einbaut und fertig. Das würde dann z.B. so ausschauen:<a href="images/image-1.jpg" rel="lightbox[album1]" title="<a href="http://www.meinlink.de">Link</a>">thumbnailimage #1</a>.
Doch ganz so einfach geht’s leider nicht.
In dem Title-Element dürfen selbstverständlich keine weiteren Tags reingeschachtelt werden. Das würde den Link-Tag vollkommen zerschießen und der Browser wüsste nicht mehr was er mit so nem zerschossenen Link anfangen soll. Damit die Sache aber trotzdem funktioniert, werden einfach die Sonderzeichen wie Anführungszeichen, und die Größer-Klein-Zeichen in HTML-Entities umgewandelt. Denn das Lightbox-Script macht schließlich nichts anderes als diesen Text dann unter das Bild als HTML-Text zu schreiben – ganz so als hätte man es per Hand reingeschrieben.
Hier eine kleine Liste der zu ersetzenden Zeichen:
Wenn man dies nun auf unseren Link-Tag anwendet, schaut er schließlich folgendermaßen aus. Zur besseren Übersicht habe ich einmal die ersetzen Zeichen fett gesetzt.
<a href="images/image-1.jpg" rel="lightbox[album1]" title="<a href="http://www.meinlink.de">Link</a>">thumbnailimage #1</a>
So, nun habe ich einmal geschildet wie das mit Lightbox2 ausschaut wenn man die Links händisch in statische HTML-Seiten einbaut. Natürlich geht das ganze auch in einer PHP Umgebung und auch mit dem wunderbaren Flickr-Photgalerie Plugin für WordPress.
Beispielhaft will ich einmal meine Umsetzung für meine Hauptseiten einer Photogalerie zeigen – wie z.B. die Seite mit den Typo-Fundsachen Das Flickr-Album hab ich entfernt. Man kann ja für das Flickr-Plugin eigene Template-Dateien anlegen. In dem Fall der Galerie-Übersichtsseite ist die entsprechende Template-Datei. photoalbum-album.html und liegt im WordPress-Theme Ordner rum. Anhand dieser Datei möchte ich einmal aufzeigen wie man da nun die Links in die Lightbox-Darstellung reinbekommt. Inzwischen hat das Flickr-Photogalerie-Plugin bereits eine Lightbox2 Unterstützung serienmäßig vorbereitet, doch ich nutze weiterhin meine händische Einarbeitung, da ich Lightbox2 auch an anderen Stellen verwende und die Javascript-Daten nicht x-mal neuladen möchte.
Zunächst an welcher Stelle geht’s nu los?
Die Darstellung der einzelnen Bilder auf der Galerie-Übersichtsseite wird innerhalb eines PHP-Loops erzeugt. Den Loop findet man in der Datei recht flott: Es geht um den Kram zwischen <?php foreach ($photos as $photo):?> und <?php endforeach?>. Ich habe unten einen Screenshot aus Textmate erstellt, wo man meinen Code auch lesen kann. Jetzt wäre wahrscheinlich ein guter Augenblick sich den mal anzuschauen…

In unserem Fall geht es ja vor allem um den Link-Tag, den ich nun einmal kurz Schritt für Schritt – also Zeile für Zeile – erläutern will.
Zeile 27: href
Direkt nach dem öffnen des a-Tags beginnt’s natürlich mit href. Die Zeile ist nicht weiter spannend, und verweist einfach auf das Bild selbst. Das Flickr-Plugin generiert den entsprechenden korrekten Link aus der echo Befehl, den ich hier nicht weiter erklären will:
href="<?php echo $photo['sizes']['Medium']['source']?>"
Zeile 28 rel
Hier wird’s schon ein bissel interessanter da wir anfangen Lightbox2-artige Dinge zu tun. Damit Lightbox2 überhaupt genutzt wird muß halt das rel-Tag genutzt werden.:
rel="lightbox[<?php echo $album['title']?>]"
Damit die Bilder auch als Set dargestellt werden wird in den eckigen Klammern der immer identische Titel des Albums mithilfe des Befehls echo $album['title'] ausgegeben.
Bei meinem Album mit den Typo-Fundsachen schaute diese Zeile schließlich im Ergebnis folgendermaßen aus:
rel="lightbox[Typo Fundsachen]"
Zeile 29: title
In dieser Zeile geht’s nun schließlich an’s Eingemachte. Die Geschichte beginnt zunächst mit:
title="<?php echo htmlentities($photo['title'])?> wodurch einfach der Titel des Bildes ausgegeben wird. durch echo htmlentities wird der Titel auch in korrekten Entities ausgegeben, was für Umlaute in Bildtiteln ganz sinnvoll ist.
Nach dem Titel folgt nun endlich der eigentliche Link in der Bildbeschreibung. Der Bereich wirkt vielleicht ziemlich erschreckend, ist aber wenn man genau hinschaut dann doch verständlich:
<a href="album/<?php echo $album['id']?>/photo/<?php echo $photo['id']?>/<?php echo $album['pagename2'] .'-'. $photo['pagename']?>" >[mehr]</a>
Der Link zu einer Bildseite schaut halt bei dem Flickr-Plugin etwas kurios aus, und ist auch nicht gerade besonders kurz:
http://www.72quadrat.de/blog/photos/album/99593/album/99593/photo/3126402/Typo_Fundsachen-Druck_eines_alten_BuchdruckKlischees.html.
Dieser ganze Kram muß nun für jedes Bild generiert werden, und nicht’s anderes tut der Rest der Zeile.
Die Geschichte beginnt mit <a href="album/… wodurch zunächst einmal auf die Hauptseite des Flickr-Plugins verwiesen wird. In meinem Fall liegt das Plugin auf der Seite photos. Wie zu erkennen ist, wurden die Anführungszeichen und die Größer-Klein-Zeichen (s.o.) Lightbox2-entsprechend in HTML-Entities umgewandelt. Ich will mir mal ersparen den ganzen Rest jetzt zu erklären. Durch die diversen PHP-Befehle wird schlicht die URL zu dem Bild geschriben:
…?php echo $album['id']?>/photo//…
Nach dem letzten PHP-Befehl für die Erstellung der korrekten URL wird schließlich das Link-Tag geschlossen – wieder indem die Anführungszeichen und Co in Entities umgewandelt werden, und es wird der Text angegeben, der den Link abbildet – bei mir das Wort »mehr« in eckigen Klammern:
…" >[mehr]</a>.
Soweit erstmal…
Folgene Tags/Schlagwörter wurden diesem Beitrag zugeordnet: »About 72quadrat, wordpress«.
72Quadrat.de läuft mit WordPress | Impressum | Datenschutzerklärung | Beiträge (RSS) und Kommentare (RSS). 38 Datenbank Anfragen. 0,998 Sekunden | Abmelden | Zum Admin Bereich geht's hier | © Timo Höner All rights reserved.
Ein Wahnsinn Leute. Echt gro?er Respekt vor allen die das Ding programmiert haben.
Durch Leute wie euch bekommt das Internet ein professionelles und formschönes Gesicht.
DANKE und weiter so
Hm, WordPress dürfte bei diesem Artikel ein bisschen im RSS-Feed herumspuken, denn ich sehe ihn jeden Tag aufs Neue in meinem RSS-Reader (bloglines)…
Christoph: Du hast recht. Mich nervt mein eigener Beitrag hier auch schon ein bissel rum. Nur ist mir bisher noch nichts eingefallen wie ich das hinbekommen könnte? Liegt wahrscheinlich an dem ganzen Quellcode-Kram der hier in diesem Beitrag rumliegt. Doch das macht’s auch nicht leichter den Fehler zu finden :-(
Ich kann im Grunde nicht verstehen, was hier austzsetzen ist? Ich fands extrem hilfreich, seitdem ich hier auf die Seite gestoßen bin. Ich habe aber mal eine Frage zu den Links von Flickr Fotos. Erscheint dort auch eine direkte URL oder werden z.B. nur die Jappy Bilder angegeben?
Hallo Lars,
auszusetzen war eigentlich nur, daß dieser Beitrag im RSS-Feed immer wieder als neu ausgegeben wurde, obwohl ich daran nichts geändert hab.
Deine Frage hab ich aber leider nicht so richtig verstanden. Was meinst Du genau?
Danke für die Information, also diese seite werde ich mir besser unter die Lupe nehmen.!!
Danke fuer die Information, also diese seite werde ich mir besser unter die Lupe nehmen.!!