J'essaie d'utiliser Views pour charger des nœuds à partir d'une autre base de données Drupal définie dans settings.php avec une clé de «cms». Les deux sites sont Drupal 7. L'autre base de données est une installation Drupal différente qui agit comme un référentiel de contenu ou un CMS centralisé. Mon objectif est de créer un nouveau type / groupe de vues sur le site de destination, donc lors de la création d'une vue, la construction du site peut choisir "Contenu CMS" au lieu de "Contenu". J'espère qu'un constructeur de site serait alors en mesure de créer une vue normalement basée sur les types de contenu et le contenu du site CMS centralisé, même si je dois dire des vues sur tous les champs de chaque type de contenu.
Dans mon implémentation hook_views_data (), j'ai défini la clé 'database', mais je ne peux pas comprendre comment lire à partir de la table de nœuds sans remplacer $ 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;
}
Bien sûr, cela ne recherche pas une table de nœuds, il recherche une cms_connector
table dans ma cms
base de données, qui n'existe pas.
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 dit que la clé dans $ data…
doit être le nom de base de données réel de la table (sans le préfixe), mais il peut s'agir d'un alias tant que les informations de jointure (expliquées plus loin) contiennent le vrai nom de la table.
Je ne veux pas réellement faire de jointure, je veux créer une table de base à partir de la table de nœuds de l'autre base de données. Mais j'ai quand même essayé cela (même si cela n'a pas vraiment de sens) après avoir vu 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',
),
);
J'ai cherché ici, faites et Stack Overflow, mais la plupart de ce que je trouve est Some-other-database-to-Drupal, pas Drupal-to-Drupal.
J'ai trouvé la question /drupal/12736/using-nodes-from-another-site-database ici, mais il s'agit de références de nœuds et est sans réponse.
J'ai pensé à utiliser les services pour lire XML / JSON à partir du site centralisé, mais il y a trop d'obstacles à cette approche. Je ne veux pas non plus vraiment synchroniser les nœuds.