Drupal Views:以编程方式更改View并执行到数组

时间:2011-05-05 08:43:20

标签: drupal drupal-views default

基本上我有一个名为' promo '的视图,它建立在Nodequeue上。它被限制为1行,并按Global:Random

排序

视图本身用于网站上的块。

此外,视图相同的视图用于节点参考字段“ field_promo ”。

我想要做的是从促销视图中获取最近的两行,并将这些行用作 field_promo 的默认值。

这需要我:

  • 加载视图
  • 删除全局:随机排序
  • 添加已创建排序
  • 更改寻呼机以显示2行而不是1
  • 执行视图

...

自从写完这一切并确保我不是白痴之后,我已经收集了我可能会在下面发布的解决方案,因为我花了这么长时间才找到它! (将在8小时后发布解决方案,如果你在发布之前解决问题,我会给出分数:P)

1 个答案:

答案 0 :(得分:6)

以下是我提出的解决方案:

$view = views_get_view('promo_feature');
$view->init_display();
$view->preview=TRUE;
$view->is_cacheable = FALSE;
$view->display_handler->set_option('items_per_page',2);
$view->set_item('default', 'sort', 'random', NULL);
$view->add_item('default', 'sort', 'node', 'created',array('order' => 'DESC'));
$view->pre_execute();
$output = $view->display_handler->preview();
$view->post_execute();

$return=array();
foreach($view->result as $row){
  $return[]=array('nid' => $row->nid);
}

return($return);

$ view-> set_item($ display,$ type,$ id,NULL)从视图中删除该项

我怀疑这个代码有一个更精致的版本,但是我花了很长时间才到达那里我害怕触摸它以防万一我销毁它:)