Heute musste ich mich mit diversen Galerien rumplagen. Am Ende hat sich der Kunde dann für die JonDesign’s Smoothgallery entschieden. Das Paket zum Download enthält eigentlich alles, was man für eine Fotogalerie braucht, die anständig präsentiert werden soll. Die Anleitung zum Einbau in die eigene Website ist gut organisiert und für die Benutzer von Flickr existiert auch ein Plugin, so dass man die Bilder nicht auf dem eigenen Webspace bereitstellen muss. Mein Kunde hat seine Bilder aber in einem Picasa-Webalbum organisiert.
Den Einsatz des Zend Framework, um die Google API anzusteuern, habe ich aber gleich für mich ausgeschlossen. Zum Glück wird nämlich in den Galerien der Picasa-Webalben auch ein RSS-Feed angeboten. Und daraus sollte sich ja etwas machen lassen, das mal eben schnell die erforderlichen Konstrukte für die Smoothgallery erstellt. Die Bilder stehen übrigens standardmäßig auch in 4 weiteren Größen (s144, s288, s400 und s800) zur Verfügung, sodass man eigentlich keine Thumbnails mehr generieren muss.
Die Lösung auf die Schnelle sieht dann so:
[code lang="php"]
xml = new SimpleXMLElement($xmlstr);
}
function get () {
$res = array ();
foreach ($this->xml->channel->item as $item) {
$image = new PicasaImg ((string) $item->title, (string) $item->enclosure['url']);
$res[] = $image->get ();
}
return $res;
}
function title () {
return (string) $this->xml->channel->title;
}
function description () {
return (string) $this->xml->channel->description;
}
}
class PicasaImg {
var $title;
var $url;
function __construct ($title, $url) {
if (!defined ("THUMB_SIZE")) define ("THUMB_SIZE", "s144");
if (!defined ("IMAGE_SIZE")) define ("IMAGE_SIZE", "s800");
$this->title = $title;
$this->url = $url;
}
function getURL ($size) {
$url = parse_url ($this->url);
$path = split ('/', $url['path']);
$path[count ($path) - 1] = $size . '/' . $path[count ($path) - 1];
return $url['scheme'] . '://' . $url['host'] . '/' . implode ('/', $path);
}
function get () {
return array (
'title' => $this->title,
'image' => $this->getURL (IMAGE_SIZE),
'thumb' => $this->getURL (THUMB_SIZE),
);
}
}
$prs = new PicasaRss ("URL ZUM FEED");
?>
?>
<img src="" class="full" />
<img src="" class="thumbnail" />
[/code]
Have Fun!
Hallo,
könntest Du noch posten, wie genau und vor allem wo der Code eingefügt werden muss?
Vielen Dank
Christian
Hallo Christian,
eigentlich muss um das div nur etwas HTML-Code herumgebaut werden und dann am Ende der notwendige JavaScript-Code für die Galerie eingesetzt werden. Wenn Du Dir das Let’s get started ! durchliest, siehst Du, dass ich hier eigentlich den Step 2 “Prepare the meal” besprochen habe, der vermutlich für die meisten am aufwendigsten ist.
Hallo Dennis,
danke für die tolle Idee! Werde ich demnächst in meinen SmoothGallery Plugin für WordPress einbauen: dann ist die Integration noch leichter. An einer Möglichkeit Bilder von Flickr zu holen, arbeite ich ebenfalls.
Grüße,
Christian
Gern geschehen. Für Flickr habe ich auch schon was geschrieben …
Hallo!
Kann mir wer ein Beispiel für die “URL ZUM FEED” posten? Weiß nicht genau welchen Link ich hier brauche.
Danke!
@Thomas Schau mal hier -> eines meiner Picasa-Alben … rechts auf der Seite steht RSS. Und in “Action” kann man die Bilder in der Galerie der Sferracavallo-Seite sehen.
Hallo,
zunächst mal vielen Dank für dein Script, eine wirklich geniale Lösung.
Ich habe mir alles zur Nutzung mit Floatbox umgebaut, doch eine Kleinigkeit vermisse ich noch:
Gibt es eine Möglichkeit den Titel und die Beschreibung des Albums auszulesen?
Ist ja mit im RSS-Feed angegeben, allerdings weiss ich nicht so recht wie ich da ran komme.
Gruß
@Christoph: Ich hab’ noch zwei Methoden zur ersten Klasse hinzugefügt. Jetzt kann man sich auch den Title und die Description ausgeben lassen:
echo $prs->title ();
echo $prs->description ();
Vielen Dank für das Script. Wollte mir gerade selbst eins schreiben und habe es gerade noch rechtzeitig entdeckt, wieder ein paar Stunden gespart
Zusammen mit der obligatorischen Lightbox2 (http://www.lokeshdhakar.com/projects/lightbox2/) unschlagbar
Gern geschehen