关于drupal 7 - views 3.0 API 我已经配置了一个视图(从UI)来从自定义内容类型和其中一个显示id的字段中提取数据。我想创建一个连接(我希望以编程方式)到我的自定义表并显示映射到视图中的ID的文本。我遇到的问题是如何找出哪个表和字段加入?在我的内容类型中,我创建了field_game字段。我的自定义表将gameid作为主键。
也许是这样的?
$data['MYCUSTOMTABLE']['table']['join'] = array(
// Index this array by the table name to which this table refers.
// 'left_field' is the primary key in the referenced table.
// 'field' is the foreign key in this table.
'node' => array(
'left_table' => '??????'
'left_field' => 'field_game',
'field' => 'gameid',
),
);
我搜索高低,但没有真正接近。任何帮助表示赞赏。
答案 0 :(得分:3)
我在寻找类似问题时发现了这篇文章。但我已经解决了你的问题。
我把它放在hook_views_query_alter($ view,$ query)中:
if ($view->name == "kompasses") {
$ga_join = new views_join();
$ga_join->table = 'field_data_group_audience';
$ga_join->field = 'entity_id';
$ga_join->left_table = 'node';
$ga_join->left_field = 'nid';
$ga_join->type = 'inner';
$query->add_relationship('audience_node', $ga_join, 'node', null);
}
此处要连接的表是:field_data_group_audience,以及基表(来自名为“kompasses”的现有视图)。 audience_node将是联接的表别名。
答案 1 :(得分:0)
你很接近,但看看这个: Views包含有关如何在模块代码中执行此操作的文档。查看views / docs / views.api.php并阅读!
http://drupalcontrib.org/api/drupal/contributions%21views%21views.api.php/7是源代码,其中包含有用的注释(在底部查看源代码)。
基本上你需要实现hook_views_data_alter来告诉你有关你的表的视图。这将允许您加入。要显示连接字段,您需要在传递给hook_views_data_alter的数组中设置正确的处理程序。请查看views.api.php
中的第343行<?php
// This table references the {node} table. The declaration below creates an
// 'implicit' relationship to the node table, so that when 'node' is the base
// table, the fields are automatically available.
$data['example_table']['table']['join'] = array(
// Index this array by the table name to which this table refers.
// 'left_field' is the primary key in the referenced table.
// 'field' is the foreign key in this table.
'node' => array(
'left_field' => 'nid',
'field' => 'nid',
),
);
// Next, describe each of the individual fields in this table to Views. This
// is done by describing $data['example_table']['FIELD_NAME']. This part of
// the array may then have further entries:
// - title: The label for the table field, as presented in Views.
// - help: The description text for the table field.
// - relation: A description of any relation handler for the table field.
// - field: A description of any field handler for the table field.
// - sort: A description of any sort handler for the table field.
// - filter: A description of any filter handler for the table field.
// - argument: A description of any argument handler for the table field.
// - area: A description of any handler for adding content to header,
// footer or as no result behaviour.
//
// The handler descriptions are described with examples below.
// Node ID table field.
$data['example_table']['nid'] = array(
'title' => t('Example content'),
'help' => t('Some example content that references a node.'),
// The nid is a foreign key to the {node} table. This allows us to (easily)
// add a relationship handler for this table field, making all the table
// fields for the related node available.
'relationship' => array(
'base' => 'node', // The name of the table to join with
'field' => 'nid', // The name of the field to join with
'handler' => 'views_handler_relationship',
'label' => t('Example node'),
),
);