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.
Antworten:
Betrachten Sie das Forena- Modul. Es kann verwendet werden, um die Daten in anderen Datenbanken abzufragen (nicht zu aktualisieren). Es werden verschiedene DBMS-Formate unterstützt, beispielsweise auch eine andere Drupal-Datenbank.
Forena basiert auf der Idee, mithilfe von SQL Daten aus einer Datenbank abzurufen und mithilfe von XHTML und CSS in Webberichten zu formatieren. Für weitere Informationen zu Forena stehen zwei Dokumentationsarten zur Verfügung:
Mit Forena gelieferte Dokumentation, auf die Sie direkt nach der Installation und Aktivierung des Moduls zugreifen können. Kasse der Demo - Site für ein Online - Beispiel für den Strom:
Disclosure: Ich bin co -maintainer von Forena,
ich hoffe , dass dies nicht gegen die Website Politik auf Eigenwerbung .
quelle
Sie können Inhalte mithilfe des Moduls Ansichten exportieren, um Daten zu exportieren, und sie mithilfe des Moduls Feeds importieren (Sie können sie regelmäßig mithilfe des Moduls Regeln importieren ).
quelle
Überprüfen Sie diese Module:
EntityFieldQuery Views-Backend- oder Webdienstdaten
quelle
Eine Option mit settings.php-Datei. Konfigurieren Sie die zweite Datenbankinstanz in der Datei settings.php. Verwenden Sie nach dem Einrichten der Instanz diese db using-
db_set_active('drupal2')
Funktion und machen Sie alles mit Ihrer zweiten db.z.B
In Ihrem Modul können Sie beide Datenbanken wie folgt verwenden:
quelle
'database' => 'cms'
, mitcms
Schlüssel konfiguriert mitcms
Datenbank insettings.php
Datei.