Saya mencoba menggunakan Views untuk memuat node dari database Drupal lain yang didefinisikan di settings.php dengan kunci 'cms'. Kedua situs tersebut adalah Drupal 7. Database lainnya adalah instalasi Drupal berbeda yang bertindak sebagai repositori konten atau CMS terpusat. Tujuan saya adalah membuat tipe tampilan / grup baru di situs tujuan, jadi saat membuat tampilan, situs dapat memilih "Konten CMS" alih-alih "Konten". Saya berharap pembuat situs kemudian dapat membangun tampilan secara normal berdasarkan jenis konten dan konten dari situs CMS terpusat, bahkan jika saya harus memberi tahu pandangan tentang semua bidang di setiap jenis konten.
Dalam implementasi hook_views_data () saya, saya telah menetapkan kunci 'database', tetapi tidak dapat menemukan cara membaca dari tabel node tanpa mengganti $ 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;
}
Tentu saja ini tidak mencari tabel simpul, ini mencari cms_connector
tabel di cms
basis data saya , yang tidak ada.
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 mengatakan bahwa kunci dalam $ data ...
harus nama database aktual dari tabel (tidak termasuk awalan), tetapi bisa berupa alias selama informasi yang digabungkan (dijelaskan nanti) berisi nama sebenarnya dari tabel.
Saya sebenarnya tidak ingin melakukan join, saya ingin membuat tabel dasar dari tabel simpul database lain. Tapi saya tetap mencoba ini (walaupun itu tidak masuk akal) setelah melihat 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',
),
);
Saya telah mencari di sekitar sini, melakukan, dan Stack Overflow, tetapi sebagian besar dari apa yang saya temukan adalah database-lain-untuk-Drupal, bukan Drupal-ke-Drupal.
Saya menemukan /drupal/12736/using-nodes-from-another-site-database di sini, tapi ini tentang referensi node, dan tidak terjawab.
Saya berpikir tentang menggunakan Layanan untuk membaca XML / JSON dari situs terpusat, tetapi ada terlalu banyak rintangan untuk pendekatan itu. Saya juga tidak ingin menyinkronkan node.
Jawaban:
Pertimbangkan untuk melihat modul Forena . Ini dapat digunakan untuk meminta (tidak memperbarui) data di database lain. Berbagai format DBMS didukung, seperti database Drupal lain juga.
Forena dibangun dari gagasan menggunakan SQL untuk mendapatkan data dari database dan menggunakan XHTML dan CSS untuk memformatnya ke dalam laporan web. Untuk detail lebih lanjut tentang Forena, tersedia 2 jenis dokumentasi:
Dokumentasi yang menyertai Forena, yang dapat Anda akses tepat setelah menginstal dan mengaktifkan modul. Lihat situs demo untuk contoh online saat ini:
Pengungkapan: Saya adalah co- master dari Forena,
saya harap ini tidak melanggar kebijakan situs tentang promosi diri .
sumber
Anda dapat mengekspor konten menggunakan modul Views untuk mengekspor data dan mengimpornya menggunakan modul Feeds (Anda dapat mengimpor secara berkala menggunakan modul Rules ).
sumber
Periksa modul ini:
Backend Tampilan EntityFieldQuery atau Data Layanan Web
sumber
Satu opsi menggunakan file settings.php. Konfigurasikan instance database ke-2 dalam file settings.php. Setelah mengatur instance gunakan db menggunakan
db_set_active('drupal2')
fungsi dan lakukan apa saja dengan db kedua Anda.misalnya
dalam modul Anda, Anda dapat menggunakan kedua database seperti di bawah ini:
sumber
'database' => 'cms'
, dengancms
kunci yang dikonfigurasi dengancms
basis data dalamsettings.php
file.