I want to create more specific jquery gallery for client's wordpress site!
The idea is:
We have page "Gallery" witch will use page template "Gallery-tpl", let say!
In page template "Gallery-tpl" I have one big image in header witch is FULL SIZE of first post attachment!
some where in body I have < div > with unordered list of all attachments
TUMBNAIL SIZE!
this list must be one row slider
And I want when click on thumbnails the big image in header to change with FULL version of clicked THUMBNAIL
I found on this post Get Attachments to post how to get first attachment and how to get all of them!
I found one method to replace images with jQuery.
then I tried to combine all code together but it works only for one image
here is my "Gallery-tpl"
<?php
/**
Template Name: Gallery
original: http://www.rlmseo.com/blog/get-images-attached-to-post/
*/
function bdw_get_first_image() {
// Get the post ID
$iPostID = $post->ID;
// Get images for this post
$arrImages =& get_children('post_type=attachment&post_mime_type=image&post_parent=' . $iPostID );
// If images exist for this page
if($arrImages) {
// Get array keys representing attached image numbers
$arrKeys = array_keys($arrImages);
/******BEGIN BUBBLE SORT BY MENU ORDER************/
// Put all image objects into new array with standard numeric keys (new array only needed while we sort the keys)
foreach($arrImages as $oImage) {
$arrNewImages[] = $oImage;
}
// Bubble sort image object array by menu_order TODO: Turn this into std "sort-by" function in functions.php
for($i = 0; $i < sizeof($arrNewImages) - 1; $i++) {
for($j = 0; $j < sizeof($arrNewImages) - 1; $j++) {
if((int)$arrNewImages[$j]->menu_order > (int)$arrNewImages[$j + 1]->menu_order) {
$oTemp = $arrNewImages[$j];
$arrNewImages[$j] = $arrNewImages[$j + 1];
$arrNewImages[$j + 1] = $oTemp;
}
}
}
// Reset arrKeys array
$arrKeys = array();
// Replace arrKeys with newly sorted object ids
foreach($arrNewImages as $oNewImage) {
$arrKeys[] = $oNewImage->ID;
}
/******END BUBBLE SORT BY MENU ORDER**************/
// Get the first image attachment
$iNum = $arrKeys[0];
// Get the thumbnail url for the attachment
$sThumbUrl = wp_get_attachment_thumb_url($iNum);
// UNCOMMENT THIS IF YOU WANT THE FULL SIZE IMAGE INSTEAD OF THE THUMBNAIL
$sImageUrl = wp_get_attachment_url($iNum);
// Build the <img> string
$sImgString = '<a href="' .$sImageUrl . '" class="btw_fullimage">' .
'<img src="' . $sImageUrl . '" width="600" height="200" alt="Big Image" title="Big Image" />' .
'</a>';
// Print the image
echo $sImgString;
}
}
function bdw_get_images() {
// Get the post ID
$iPostID = $post->ID;
// Get images for this post
$arrImages =& get_children('post_type=attachment&post_mime_type=image&post_parent=' . $iPostID );
// If images exist for this page
if($arrImages) {
// Get array keys representing attached image numbers
$arrKeys = array_keys($arrImages);
/******BEGIN BUBBLE SORT BY MENU ORDER************/
// Put all image objects into new array with standard numeric keys (new array only needed while we sort the keys)
foreach($arrImages as $oImage) {
$arrNewImages[] = $oImage;
}
// Bubble sort image object array by menu_order TODO: Turn this into std "sort-by" function in functions.php
for($i = 0; $i < sizeof($arrNewImages) - 1; $i++) {
for($j = 0; $j < sizeof($arrNewImages) - 1; $j++) {
if((int)$arrNewImages[$j]->menu_order > (int)$arrNewImages[$j + 1]->menu_order) {
$oTemp = $arrNewImages[$j];
$arrNewImages[$j] = $arrNewImages[$j + 1];
$arrNewImages[$j + 1] = $oTemp;
}
}
}
// Reset arrKeys array
$arrKeys = array();
// Replace arrKeys with newly sorted object ids
foreach($arrNewImages as $oNewImage) {
$arrKeys[] = $oNewImage->ID;
}
/******END BUBBLE SORT BY MENU ORDER**************/
// izpolzvai do ili for
echo '<ul id="btw_gallery">';
for($i = 0; $i < sizeof($arrNewImages) - 1; $i++) {
// Get the first image attachment
$iNum = $arrKeys[$i];
// Get the thumbnail url for the attachment
$sThumbUrl = wp_get_attachment_thumb_url($iNum);
// UNCOMMENT THIS IF YOU WANT THE FULL SIZE IMAGE INSTEAD OF THE THUMBNAIL
$sImageUrl = wp_get_attachment_url($iNum);
// Build the <img> string
$sImgString = '<img src="' . $sThumbUrl . '" alt="Thumbnail Image" title="Thumbnail Image" class="btw_thumb" />';
// Print the image
echo '<li>'.$sImgString.'</li>';
}
echo '</ul>';
echo '
<script>
$("#btw_gallery li img").live("click", function() {
$("a.btw_fullimage").attr("href", \''.$sImageUrl.'\').attr("title", this.title);
$(".btw_fullimage img").attr("src", \''.$sImageUrl.'\').attr("alt", this.alt).attr("title", this.title);
});
</script>
';
}
}
get_header(); ?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<div id="primary">
<div id="content" role="main">
<?php while ( have_posts() ) : the_post(); ?>
<?php bdw_get_first_image(); ?>
<?php get_template_part( 'content', 'page' ); ?>
<?php bdw_get_images(); ?>
<?php endwhile; // end of the loop. ?>
<hr />
</div><!-- #content -->
</div><!-- #primary -->
<?php get_footer(); ?>
I sure there is more correct and profesional way to do this and it will work!
If some one can help me with this, please answer me!