2013-05-28 389 views

回答

0

一定要聲明hook_views_api()或者這個鉤子不會被解僱。

但是你通過hook_views_default_views()

做到這一點在Views,你創建你想在模塊中包括視圖。然後使用功能hook_views_default_views(),而將出口代碼(從視圖),像這樣:在函數結束

function yourmodulename_views_default_views() { 
    // Begin copy and paste of output from the Export tab of a view. 
    $view = new view; 
    // ..yadda yadda yadda 

    // Add view to list of views to provide. 
    $views[$view->name] = $view; 

    // Begin copy and paste of output for another view 
    $view = new view; 
    // ..yadda yadda yadda 

    // Add view to list of views to provide. 
    $views[$view->name] = $view; 

    return $views 
} 

返回$視圖將返回所有的意見你。

+0

非常感謝。但我一直在寫視圖代碼,而不是導出。添加了我的代碼以供參考。 – tina

+0

對不起,我通常會先輸出代碼,然後將它放在一個模塊中 - 但看起來你是從頭開始寫的......你是從頭開始編寫的特殊原因嗎? – inertialmedia

+0

任何人都可以請幫忙嗎? – tina

1

這個話題已經休眠了很多年,但沒有得到正確的答案。所以,讓我。

上面的問題是,您將您的視圖列在同一個文件,這是混亂和無組織。下面是一個更合適和直接的做事方式。

首先,我建議在您的模塊目錄中創建一個文件夾,例如「YOUR_MODULE/views /」

然後對於您想要導入的每個視圖,您將創建一個新文件,如「my_view.inc」,其中一個文件是一個視圖。如果您稍後需要進行更改,這可以更輕鬆地找到您要查找的視圖。

然後是聲明您將用於導入的api。

/** 
* Implements hook_views_api(). 
*/ 
function YOUR_MODULE_views_api() { 
    return array(
    'api' => '3.0', 
); 
} 

一旦聲明瞭api版本,您將需要以下內容。

/** 
* Implements hook_views_default_views(). 
*/  
function YOUR_MODULE_views_default_views() { 
    $views = array(); 
    $path = drupal_get_path('module', 'YOUR_MODULE') . '/views/*.inc'; 

    foreach(glob($path) as $file) { 
    require_once $file; 
    $views[$view->name] = $view; 
    unset($view); 
    } 

    return $views; 
} 

這樣做是找子目錄裏面的所有「my_view.inc」文件,並會清除緩存後自動加載它們。

希望這可以幫助那些仍然卡住的人。

相關問題