Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Random Images from Gallery Albums


Reply

4 Posts   576 Views

Avatar
ss-ss

16 March 2012 at 1:37am (Last edited: 16 March 2012 1:39am), Community Member, 15 Posts

Hi,

I am using the following code to fetch 6 random images from all the albums located in one gallery, but sometimes I am getting 3 random images, sometimes 4 and soon. It is not always 6 random images.

What I am doing wrong?

function GalleryImages() {
      $gallery = DataObject::get_one("ImageGalleryPage");
      $items = DataObject::get("ImageGalleryItem","ImageGalleryPageID = {$gallery->ID}","RAND()",null,6);
      return $gallery->GalleryItems(null,$items);
   }    

Avatar
ss-ss

17 March 2012 at 12:33am Community Member, 15 Posts

Anybody please???

Avatar
Nobrainer Web

19 March 2012 at 9:01am Community Member, 135 Posts

Why are you doing return $gallery->GalleryItems(null,$items);
and not just: return $items;

Sorry if it's not a help, i just got curious :o)

Avatar
novaweb

19 March 2012 at 9:54am Community Member, 115 Posts

ss-ss,

This is probably because RAND() is returning numbers outside of the range in which gallery items exist within your gallery.

I would run:

$items = DataObject::get("ImageGalleryItem","ImageGalleryPageID = {$gallery->ID}");

To return all of your images, first.

Then put the id's of the $items in to an array.

Then use shuffle on the array ( http://nz.php.net/shuffle )

Then inside a for loop (limited to 6), run DataObject::get_by_id inside the loop using the shuffled id's, append each result to a new DataObjectSet thenm return that at the end of your function.

Good luck!