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.
i got array with last opened pages and i wanna ask you how to order items in datalist by this ordered array
i tried to add items one by one but it doesnt work
$idList = Session::get('recentproducts');
$dl = DataList::create('ProductPage')->byIDs(array($idList));
for ($i = 1; $i < count($idList); $i++)
aby better idea?
thanks, but i'm not sure you understood my problem
I have array with ID of pages
(for example 35 43 30 32 40 50 83 52)
and I want to create DataList with DataObjects in same order as in array
(or maybe i dont understand how to use sort method in this case, can you show me it in code please)
Sorry, I misunderstood your problem, but although you can use the sort metod combined with SQL functions .
You have an array with product ids and want to create a DataList with that products wich are in the same order like in your array?
Try the following:
// $idList is a comma separated string?
$dl = DataList::create('ProductPage')->byIDs(array($idList))->sort('FIELD(ID, ' . $idList . ')');
// Plain SQL would look like
// SELECT * FROM ProductPage WHERE ID IN (35, 43 ,30 ,32) ORDER BY FIELD (ID, 35, 43, 30, 32);
If you are planning for this to be in a GridField and you wish to change the sorting I would checkout the Sortable GridField Component.
Then you can drag and drop those items into whatever order you want and just use the sort() function when you build the list.