内容丰富:以随机顺序返回条目

时间:2017-05-15 06:09:57

标签: php contentful

是否可以通过Contentful Query以随机顺序返回条目?
 如果不指定"->where"参数,它将按字母顺序对条目进行排序

我已尝试使用shuffle()array_rand(),但它并未将Contentful对象识别为数组

这是我目前所拥有的:



<?php			
$query = new \Contentful\Delivery\Query;
$query->setContentType(PRODUCT_TYPE);

$entries = $client->getEntries($q1->where('fields.images[exists]', 'true')->where('fields.category.sys.id', $entry->getCategory()->getId())->where('limit', '3'));

$array_shuffle = shuffle($entries)

foreach ($array_shuffle as $entry) 
  {}

?>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

Contentful PHP SDK的作者。

不幸的是,保存查询结果的类当前不允许访问内部数组。我刚开了一个pull request来改变它。它将成为1.2版的一部分,将于本周晚些时候发布。

与此同时,最好的办法是使用iterator_to_array()

<?php           
$query = new \Contentful\Delivery\Query;
$query->setContentType(PRODUCT_TYPE);

$entries = $client->getEntries($q1->where('fields.images[exists]', 'true')->where('fields.category.sys.id', $entry->getCategory()->getId())->where('limit', '3'));

$arrEntries = iterator_to_array($entries);

shuffle($arrEntries)

foreach ($arrEntries as $entry) 
  {}

注意我还修复了shuffle()的使用方式。它不会返回混洗数组,它会将其更改。