Ich versuche, Views zu verwenden, um Knoten aus einer anderen Drupal-Datenbank zu laden, die in settings.php mit dem Schlüssel 'cms' definiert ist. Beide Sites sind Drupal 7. Die andere Datenbank ist eine andere Drupal-Installation, die als Inhalts-Repository oder zentrales CMS fungiert. Mein Ziel ist es, einen neuen Ansichtstyp / eine neue Ansichtsgruppe auf der Zielwebsite zu erstellen. Beim Erstellen einer Ansicht kann der Site-Build daher "CMS-Inhalt" anstelle von "Inhalt" auswählen. Ich hoffe, dass ein Site Builder dann in der Lage ist, eine Ansicht zu erstellen, die normalerweise auf Inhaltstypen und Inhalten der zentralisierten CMS-Site basiert, selbst wenn ich Ansichten zu allen Feldern in jedem Inhaltstyp angeben muss.
In meiner Implementierung von hook_views_data () habe ich den Schlüssel 'database' festgelegt, kann aber nicht herausfinden, wie aus der Knotentabelle gelesen werden kann, ohne $ data ['node'] zu überschreiben.
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;
}
Natürlich sucht dies nicht nach einer Knotentabelle, sondern nach einer cms_connector
Tabelle in meiner cms
Datenbank, die es nicht gibt.
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 besagt, dass der Schlüssel innerhalb von $ data…
sollte der tatsächliche Datenbankname der Tabelle sein (ohne Präfix), kann aber ein Alias sein, solange die Verknüpfungsinformationen (später erklärt) den tatsächlichen Namen der Tabelle enthalten.
Ich möchte eigentlich keinen Join ausführen, sondern eine Basistabelle aus der Knotentabelle der anderen Datenbank erstellen. Aber ich habe es trotzdem versucht (obwohl es keinen Sinn ergibt), nachdem ich http://drupal.org/node/1713010#comment-6310438 gesehen habe :
$data['cms_connector']['table']['join'] = array(
'node' => array(
'left_field' => 'nid',
'left_table' => 'node',
'field' => 'nid',
'table' => 'node',
),
);
Ich habe hier gesucht, und Stapelüberlauf, aber das meiste, was ich finde, ist Einige-andere-Datenbank-zu-Drupal, nicht Drupal-zu-Drupal.
Ich habe die Frage /drupal/12736/using-nodes-from-another-site-database hier gefunden, aber es geht um Knotenreferenzen und sie ist unbeantwortet.
Ich habe darüber nachgedacht, mit Services XML / JSON von der zentralisierten Site zu lesen, aber dieser Ansatz weist zu viele Hürden auf. Ich möchte Knoten auch nicht wirklich synchronisieren.