【问题标题】:Contentful: Return entries in a random order内容丰富:以随机顺序返回条目
【发布时间】:2017-10-13 19:52:57
【问题描述】:

是否可以通过内容查询以随机顺序返回条目?
如果不指定"->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) 
  {}

?>

【问题讨论】:

    标签: php contentful


    【解决方案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() 的使用方式。它不会返回打乱后的数组,而是在原地更改它。

    【讨论】:

      猜你喜欢
      • 2020-07-24
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      相关资源
      最近更新 更多