我是新手,已经开始编写模块了。我需要在1个模块中添加多个视图。我使用hook_views_api()和hook_views_data()添加了1个视图。任何人都可以帮助在单个模块中添加更多视图吗?
答案 0 :(得分: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”文件,并在清除缓存后自动加载它们。
希望这有助于那些仍然被困住的人。
答案 1 :(得分: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
}
函数末尾的return $ views将返回所有视图。