我正在尝试使用Views从另一个在settings.php中定义的Drupal数据库中加载节点,并使用'cms'键。这两个站点都是Drupal7。另一个数据库是一个不同的Drupal安装,它充当内容存储库或集中式CMS。我的目标是在目标站点上创建新的视图类型/组,因此,在创建视图时,站点构建可以选择“ CMS内容”而不是“内容”。我希望站点构建器能够正常地基于内容类型和集中式CMS站点中的内容来构建视图,即使我必须告知每种内容类型中所有字段的视图也是如此。
在我的hook_views_data()实现中,我设置了'database'键,但是在不覆盖$ data ['node']的情况下无法弄清楚如何从节点表中读取数据。
function cms_connector_views_data() {
$data['cms_connector']['table']['group'] = t('CMS Content');
$data['cms_connector']['table']['base'] = array(
'field' => 'nid',
'title' => t('CMS Content'),
'help' => t('Content from the centralized CMS.'),
'database' => 'cms',
);
return $data;
}
当然,这不是在寻找节点表,而是cms_connector
在我的cms
数据库中寻找一个不存在的表。
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'cms.cms_connector' doesn't exist
http://views-help.doc.logrus.com/help/views/api-tables说$ data中的键…
应该是表的实际数据库名称(不包括前缀),但可以是别名,只要连接信息(稍后说明)包含表的真实名称即可。
我实际上并不想进行联接,而是想从另一个数据库的节点表创建基表。但是在看到http://drupal.org/node/1713010#comment-6310438之后,我还是尝试了此方法(即使这实际上没有意义):
$data['cms_connector']['table']['join'] = array(
'node' => array(
'left_field' => 'nid',
'left_table' => 'node',
'field' => 'nid',
'table' => 'node',
),
);
我在这里搜索,搜索和堆栈溢出,但是我发现的大部分是“其他数据库到Drupal”,而不是“ Drupal到Drupal”。
我在这里找到了/drupal/12736/using-nodes-from-another-site-database问题,但这是关于节点引用的,尚未得到解答。
我曾考虑过使用Services从集中式站点读取XML / JSON,但是这种方法存在很多障碍。我也不想同步节点。