Bilder automatisch aus Post auslesen und in Greybox-Imageset darstellen
by zartgesotten on Juni 4, 2009
In einem aktuellen Projekt stellte sich mir folgende Aufgabe:
Von den (mehreren) einem Post angehängten Bildern sollte das ERSTE Bild in Medium-Größe im Beitrag angezeigt werden.
Dabei sollte die Galerie-Sortierung des Posts für die Bildreihenfolge zu Grunde gelegt werden. Der Kunde soll also durch sortieren auch entscheiden können, welches Bild auf der Post-Seite angezeigt wird.
Bei Klick auf das Bild sollte eine Greybox (Plugin Greybox-Integrator) geöffnet werden, in der dann alle restlichen Bilder, die am Beitrag hä¤ngen angezeigt werden (durch Pfeile navigierbar). Dieser Teil kann durch kleinste Code-Änderungen natürlich so angepasst werden, dass sich eine andere Viewer-Box öffnet.
Weil es gerne Probleme gibt, wenn man den Code aus dem Fenster unten kopiert, hier der Download als Textdatei.
Hier ist der Code (muss in den Loop auf index.php oder category.php oder auch single.php)
Wenn Dich das froh gemacht hat, kommentiere doch einfach
<!--Automatic Greybox-->
<?php
//Die zum Post gehoerenden Bilder ins Array $images schreiben
//Put images from post in to array $images. Order by menu order defined in post gallery
$images = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
//Pruefen, ob dem Beitrag Bilder angehaengt wurden.
//check if there are any images attached to the post
if (isset($images))
{
//Den Zaehler auf 0 setzen
//set counter to 0
$count=0;
//Alle Bilder im Array $images nacheinander durchlaufen
//go through all images in array $images
foreach( $images as $image )
{
$imageID = $image->ID;
//fuer jedes Bild im Array die URL von sowohl der Mittleren, als auch der grossen Groesse ermitteln.
//get medium and large image url for image
$medImageSrc = wp_get_attachment_image_src($imageID, $size='medium', $icon = false);
$largeImageSrc = wp_get_attachment_image_src($imageID, $size='large', $icon = false);
//Wenn es sich um das erste Bild im Array handelt...
//If it's the first image in the array
if ($count==0)
{
//Den Greybox-Code mit einem Vorschaubild ausgeben
//output Greybox Code with medium size preview
echo"<a href='$largeImageSrc[0]' rel='shadowbox[Bilder]'><img src='$medImageSrc[0]' border='0'></a>";
}
//alle Bilder ,die nach dem erstern Bild kommen
//this is for all the images that come after the first one
else
{
//unsichtbare Greybox-Verknuepfung darstellen.
//create invisible Greybox-Links without preview image
echo"<a href='$largeImageSrc[0]' rel='shadowbox[Bilder]'></a>";
}
//Zaehler erhoehen.
//increase counter
$count++;
} //foreach
}
?>
<!--ENDE Automatic Greybox -->
Leave your comment