2011-05-05 54 views
2

本質上,我有一個名爲'促銷'的視圖,它基於Nodequeue構建。它被限制爲1行,並按全局排序:隨機Drupal視圖:以編程方式更改視圖並執行到數組

視圖本身正在用於網站上的塊。

此外,視圖相同的視圖是節點參考字段'field_promo'。

我想這樣做是爲了獲得從促銷鑑於2個最近的行,並使用這些作爲默認值field_promo

什麼,這需要的是我:

  • 負荷的觀點
  • 刪除全球:隨機排序
  • 添加創建排序
  • 變化尋呼機顯示2行,而不是1
  • 執行視圖

...

由於寫了這一切,確保我不是白癡,我已經收集在一起,我可以和下面張貼因爲我花了這麼長時間才找到它的解決方案! (8小時後會發布的解決方案,如果你破解的答案之前,我後我給點:P)

回答

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

$視圖 - > set_item($ display,$ type,$ id,NULL)從視圖中刪除那個項目

我懷疑這個代碼有一個更精煉的版本,但是我花了很長時間纔到達那裏,我很害怕觸摸它如果我摧毀它:)

相關問題