Próbuję użyć widoków, aby załadować węzły z innej bazy danych Drupal zdefiniowanej w pliku settings.php za pomocą klucza „cms”. Obie strony to Drupal 7. Druga baza danych to inna instalacja Drupal, która działa jako repozytorium treści lub scentralizowany CMS. Moim celem jest utworzenie nowego typu widoku / grupy w witrynie docelowej, więc podczas tworzenia widoku kompilacja witryny może wybrać „Treść CMS” zamiast „Treść”. Mam nadzieję, że twórca witryny będzie w stanie zbudować widok normalnie na podstawie typów treści i treści ze scentralizowanej witryny CMS, nawet jeśli będę musiał powiedzieć poglądy na temat wszystkich pól w każdym typie treści.
W mojej implementacji hook_views_data () ustawiłem klucz „bazy danych”, ale nie mogę wymyślić, jak czytać z tabeli węzłów bez przesłaniania $ 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;
}
Oczywiście to nie szuka tabeli węzłów, szuka cms_connectortabeli w mojej cmsbazie danych, która nie istnieje.
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 mówi, że kluczem do danych $…
powinna być faktyczną nazwą bazy danych tabeli (bez prefiksu), ale może być aliasem, o ile informacje o połączeniu (wyjaśnione później) zawierają prawdziwą nazwę tabeli.
Tak naprawdę nie chcę łączyć, chcę utworzyć tabelę bazową z tabeli węzłów drugiej bazy danych. Ale i tak spróbowałem (nawet jeśli to nie ma sensu) po obejrzeniu 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',
),
);
Szukałem tutaj, wykonaj i przepełnienie stosu, ale większość tego, co znajduję, to Some-other-database-to-Drupal, a nie Drupal-to-Drupal.
Znalazłem tutaj /drupal/12736/using-nodes-from-another-site-database pytanie, ale dotyczy ono odwołań do węzłów i nie ma na nie odpowiedzi.
Myślałem o użyciu Usług do odczytu XML / JSON ze scentralizowanej strony, ale jest to zbyt wiele przeszkód w tym podejściu. Nie chcę też synchronizować węzłów.