【发布时间】:2011-04-02 10:39:06
【问题描述】:
我有一个由模块创建的表。我需要将它的一些字段包含到现有视图中。
我尝试使用the table wizard module,但它所做的只是为该表创建一个单独的视图。我希望能够从该表中选择字段作为附加字段或通过关系或类似的方式添加到现有视图中。是否有解决方法来做我想做的事情?
【问题讨论】:
标签: php drupal content-management-system
我有一个由模块创建的表。我需要将它的一些字段包含到现有视图中。
我尝试使用the table wizard module,但它所做的只是为该表创建一个单独的视图。我希望能够从该表中选择字段作为附加字段或通过关系或类似的方式添加到现有视图中。是否有解决方法来做我想做的事情?
【问题讨论】:
标签: php drupal content-management-system
啊。意见。也花了我一段时间。此答案适用于 Drupal 6,摘要中显示了如何定义字段以及使用关系来允许字段链接到节点表。
在 modulename.module 中,您需要一个函数:
function modulename_views_api() {
return array(
'api' => 2,
);
}
然后你想创建一个名为 modulename.views.inc 的文件并定义一个这样的函数:
功能模块名称_views_data(){ $data['modulename_table'] = 数组( '表' => 数组( '组' => '模块名称', 'title' => '模块名称标题', ), '加入' => 数组( // 要加入节点,我们将使用 modulename_table 中名为 'nid' 的字段 '节点' => 数组( 'left_field' => 'nid', '字段' => 'nid', ), ), ); // 现在我们像这样定义表中的字段 // 检查模块/视图/处理程序以查看更具体的处理程序 $data['modulename_table']['fieldname'] = array( '标题' => '字段名', '帮助' => '字段名描述', '字段' => 数组( 'handler' => 'views_handler_field', ), ); $data['modulename_table']['nid'] = array( 'title' => '相关节点', 'help' => '与 {node} 相关的字段', // 这里我们实现了一个与nid的关系 '关系' => 数组( '基础' => '节点', '字段' => 'nid', 'handler' => 'views_handler_relationship', 'label' => 'modulename 行节点', ), // 这种关系可以在视图中开启 ); 返回$数据; }【讨论】:
您可以使用 hook_views_data 在代码中定义您的表格。只要您不希望视图进行特殊操作,它几乎就像使用模式 API 定义表一样简单。
【讨论】:
您的另一个选择是使用表向导将表公开给数据库,然后使用迁移模块创建视图。 http://drupal.org/project/migrate
【讨论】:
我发现Views Custom Field 模块可以让我做任何我需要的事情,只要将奇怪的字段添加到视图中......也许会有所帮助..
【讨论】: