私はViewsを使用して、 'cms'のキーでsettings.phpで定義された別のDrupalデータベースからノードをロードしようとしています。両方のサイトはDrupal 7です。他のデータベースは、コンテンツリポジトリまたは集中型CMSとして機能する異なるDrupalインストールです。私の目標は、目的のサイトに新しいビュータイプ/グループを作成することです。そのため、ビューを作成するときに、サイトビルドは「コンテンツ」ではなく「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',
),
);
ここで検索して、Stack Overflowを実行しましたが、私が見つけているのは、DrupalからDrupalではなく、Some-other-database-to-Drupalです。
ここで/drupal/12736/using-nodes-from-another-site-databaseの質問を見つけましたが、これはノード参照に関するものであり、回答はありません。
Servicesを使用して中央サイトからXML / JSONを読み取ることを考えましたが、そのアプローチには多くのハードルがあります。私もノードを同期したくありません。