Montag, 14. September 2009

Zenphoto mit PicLens

Am Wochenende habe ich es vollbracht: Ich habe mir die Zenphoto-Galerie so angepasst, dass alles so aussieht, wie ich es will. Ich kann eigentlich weder PHP noch JavaScript noch aktuelles HTML mit CSS und all dem neumodischen Zeug, insofern war das nicht immer einfach, aber letztlich von Erfolg gekrönt. Das Ergebnis ist neben einem großen Lerneffekt für mich ein stellenweise fürchterlicher Hack, aber vielleicht haben andere trotzdem was davon, deshalb hier die Beschreibung meiner Änderungen und passende Downloads.

Alles fing damit an, dass ich feststellte, dass der Original-Default-Theme (Basis für meine Änderungen) eine feste Breite von 685 Pixeln benutzt. Wenn man die normale Bildansicht, wie ich, gerne  mit einer festen Bildhöhe von knapp 700 Pixeln gestalten möchte, sind querformatige Bilder zwangsläufig zu breit. Meine Version von image.php passt sich automatisch an die Breite des dargestellten Bildes an. (album.php ist davon nicht betroffen, es bleibt weiterhin bei 685 Pixeln.)
Dann wollte ich unbedingt PicLens lite, den Viewer von Cooliris, als Diashow einsetzen, aber aus irgendwelchen Gründen funktioniert der nicht mit dem Default-RSS-Stream von Zenphoto, obwohl man da ja Media-RSS aktivieren kann. (PicLens lite baut eine Diashow aus einem Media-RSS-Strem.)
Also habe ich mir eine rss.php irgendwo aus dem Netz geholt (wo weiß ich leider nicht mehr), von der klar war, dass sie PicLens unterstützt. Dass ich mir damit noch zusätzliche Probleme einfangen würde, war mir nicht klar.
Jetzt weiß ich, dass es vmtl. sinnvoller gewesen wäre, die wichtigen Dinge in die aktuelle rss.php zu übernehmen, statt die heruntergeladene rss.php nach meinen Wünschen anzupassen, aber ich werde die ganze Arbeit bestimmt nicht nochmal von vorn beginnen.
Problem ist nämlich: Die heruntergeladenen rss.php wurde anscheinend für eine ältere Version von Zenphoto geschrieben; Ergebnis war, dass sich alle RSS-Feeds immer auf die komplette Galerie bezogen, nicht auf das gerade gewählte Album, wie ich es gebraucht hätte. Dass sich diese Version so sehr von der aktuellen unterschied, merkte ich aber erst zum Schluss, als die ganze Arbeit schon getan war. Nun ja.
Nächster Punkt war noch, dass ich feststellte, dass PicLens a) nicht korrekt mit Optionen wie paused:true oder delay:5 gestartet werden kann, wenn man nicht gleichzeitig eine feedUrl mit angibt und b) nur schwarz anzeigt, wenn im Feed Videos vorkommen.
a) habe ich durch eine eigene Version von piclens.js lösen können, b) durch eine zusätzliche Änderung von template-functions.php, rss.php und den Aufruf in image.php und album.php.

Die Änderungen im Speziellen:
piclens.js: Unterstützt jetzt auch den Aufruf mit Optionen, wenn keine feedUrl angegeben wird (auch wenn ich das letztlich dann so gar nicht mehr gebraucht habe, weil ich sowieso eine feedUrl angeben muss).
rss.php: Spuckt PicLens-fähiges Media-RSS aus – so hatte ich es mir aus dem Netz geladen. Meine Änderung: mit der GET-Option novids=1 kann man dafür sorgen, dass die Videos ausgelassen werden. Außerdem wird der Feed (unabhängig von der entsprechenden Einstellung in den Zenphoto-Einstellungen) immer nach dem Datum der Fotos sortiert (aus EXIF), nicht nach der mtime der Dateien.
template-functions.php: Wenn "Album" als Option für printRSSLink angegeben wird, wird dem rss.php noch die Album-ID (als GET-Option albumnr) mitgegeben, damit es nur die Fotos des Albums ausspuckt. Als zusätzliche Option gibt es "AlbumSlides", dann wird ein RSS-Feed ohne Videos erstellt. Außerdem gibt es eine neue Funktion printRSSURL, die nur eine URL zum RSS-Feed ausspuckt, ohne Link außenrum. Als Parameter kann ebenso wie bei printRSSLink z.B. "Album" oder "AlbumSlides" angegeben werden.
image.php im Theme: Passt die Breite dem angezeigten Bild an. Zeigt einen Link an, um, mit dem aktuellen Bild startend, eine Diashow mit PicLens anzuzeigen. (Das Zenphoto-eigene Slideshow-Plugin sollte deaktiviert sein, sonst werden beide Links angezeigt.)
album.php im Theme: Zeigt einen Link zum Starten einer PicLens-Slideshow an, einen weiteren zum Download des Albums als ZIP (ZIP-Funktion muss aktiviert sein).

Hier die Downloads, falls das jemand wirklich auch so installieren möchte:
1) Zenphoto selbst: http://zenphoto.googlecode.com/files/zenphoto-1.2.6.zip
2) PicLens lite: http://lite.piclens.com/releases/current.zip (ZIP muss im Root des Webservers entpackt werden.)
3) Meine Version von piclens.js: http://www.zottel.net/downloads/piclens_js.zip (nach /lite/piclens.js installieren)
4) Die geänderten php.rss und zp-core/template-functions.php: http.//www.zottel.net/zenphoto_zottel_customfiles.zip (im Zenphoto-Verzeichnis auspacken)
5) Meine Version des Default-Themes: http://www.zottel.net/downloads/zottel_default_theme.zip (im themes-Verzeichnis von Zenphoto auspacken)

Vielleicht mache ich die ganzen Pakete irgendwann mal konformer zum Zenphoto-Standard, aber momentan fehlt mir die Lust, da noch einmal Arbeit reinzustecken.

Keine Kommentare:

Kommentar posten