jQuery Lightbox und PHP Speedy kombinieren
Wer sein WordPress Blog mit einer Lightbox Gallerie aufpeppen möchte, bekommt dafür einige Plugins im WordPress Codex angeboten. Nachdem ich vier verschiedene nicht zum Laufen gekriegt habe, musste ich feststellen, dass die Plugins sich nicht mit der PHP Speedy Caching Engine vertragen. Daher habe ich das jQuery Lightbox Plugin von Pedro Lamas dahingehend umgeschrieben, dass es ohne Probleme mit der Caching Engine läuft.
Die Lösung des Problems
Das Kernproblem liegt darin, dass Lightbox versucht den absoluten Pfad, in dem die Grafiken und Scripts liegen, per Javascript herauszufinden. Dabei sucht Lightbox nach dem Script-Tag, nimmt dessen SRC-Attribut und ermittelt daraus dann die BaseURL. Da PHP Speedy aber alle CSS und JS Includes aus dem HTML Code entfernt (um daraus einen kombinierten Include zu bauen), scheitert dieses Vorhaben seitens Lightbox.
Ich habe daher die Scripts dahingehend angepasst, dass Lightbox die BaseURL direkt im Script erhält (hardcoded) und außerdem die Scripte bzw. CSS Files nicht dynamisch per Javascript lädt und stattdessen diese schon serverseitig eingebunden werden, damit PHP Speedy auch alle komprimieren kann.
Dieser Tweak ist Quick&Dirty, daher übernehme ich keine Garantie, dass es auch auf anderen Blogs läuft – bei mir funktioniert es jedenfalls ohne Probleme :).
WordPress Plugin: jQuery Lightbox mit PHP Speedy Support herunterladen
Installation
- Einfach das Plugin wie gewohnt in den wp-content/plugins Ordner kopieren. Den besehenden Ordner entweder überschreiben oder vorher umbenennen.
- In dem Unterordner „js“ des jQuery Lightbox Plugins die Datei „jquery.lightbox.min.js“ in einem Texteditor öffnen
- In Zeile 480 die BaseURL anpassen (also der Pfad, wo die Daten später auf dem Server zu finden sind)
- Nicht vergessen, das Plugin im WordPress Admin zu aktivieren (Plugins->Installed).
- Eventuell müßen die bestehenden Cache Files gelöscht werden, dazu im PHP Speedy Cache Ordner mal vorbeischauen und ggf. die gechachten Javascript und CSS Dateien löschen.