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.

We're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

General Questions /

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

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

Random Images from Gallery Albums

Go to End

4 Posts   982 Views


Community Member, 24 Posts

16 March 2012 at 1:37am

Edited: 16/03/2012 1:39am


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);


Community Member, 24 Posts

17 March 2012 at 12:33am

Anybody please???

Nobrainer Web

Community Member, 138 Posts

19 March 2012 at 9:01am

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)


Community Member, 116 Posts

19 March 2012 at 9:54am


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 ( )

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!