still no joy, i've changed the count to 4 again and it worked with the above code, however i only want to show the one random image.
That is due to a quirky behaviour of the 'array_rand' PHP function we are using - it returns an array if more than 1 random items are selected but returns a simple number if only one item if selected.
Here is the revised PHP code that handles both the scenarios -
- Code: Select all
<cms:php> $path_to_images = 'uploads/image/fan-images/'; $count_rand = 1; // Number of random images to pick // Valid extensions $extensions = array( 'jpg','jpeg','gif','png','bmp' ); // Open folder and get files $images = array(); if( $handle = opendir('<cms:show k_admin_path />' . $path_to_images) ){ while (false !== ($file = readdir($handle))) { if( $file != "." && $file != ".." ){ $ext = strtolower( substr(strrchr($file, "."), 1) ); if( in_array($ext, $extensions) ){ $images[] = '<cms:show k_admin_link />' . $path_to_images . $file; } } } closedir($handle); } // Select the indicated number of random images $count_rand = ( count($images)<$count_rand ) ? count($images) : $count_rand; $rand_keys = array_rand( $images, $count_rand ); if( is_array($rand_keys) ){ for( $x=0; $x<count($rand_keys); $x++ ){ //echo '<img src="'.$images[$rand_keys[$x]].'" /><br/>'; echo '<div class="fans-image-area-1"><img src="'.$images[$rand_keys[$x]].'" width="140" height="90" /></div>'; } } else{ echo '<div class="fans-image-area-1"><img src="'.$images[$rand_keys].'" width="140" height="90" /></div>'; } </cms:php>
Hope this helps.