กำลังโหลดโหนดจากฐานข้อมูล Drupal อื่นโดยใช้ Views


12

ฉันพยายามใช้ Views เพื่อโหลดโหนดจากฐานข้อมูล Drupal อื่นที่กำหนดใน settings.php ด้วยคีย์ 'cms' ทั้งสองไซต์เป็น Drupal 7 ฐานข้อมูลอื่นคือการติดตั้ง Drupal ที่แตกต่างกันซึ่งทำหน้าที่เป็นที่เก็บเนื้อหาหรือ CMS ส่วนกลาง เป้าหมายของฉันคือการสร้างประเภท / กลุ่มการดูใหม่บนไซต์ปลายทางดังนั้นเมื่อสร้างมุมมองการสร้างไซต์สามารถเลือก "เนื้อหา CMS" แทน "เนื้อหา" ฉันหวังว่าผู้สร้างไซต์จะสามารถสร้างมุมมองตามปกติตามประเภทเนื้อหาและเนื้อหาจากไซต์ CMS ส่วนกลางแม้ว่าฉันจะต้องบอกมุมมองเกี่ยวกับฟิลด์ทั้งหมดในแต่ละประเภทเนื้อหา

ในการใช้งาน hook_views_data () ของฉันฉันได้ตั้งค่าคีย์ 'ฐานข้อมูล' แต่ไม่สามารถหาวิธีการอ่านจากตารางโหนดโดยไม่แทนที่ $ 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;
}

แน่นอนว่าสิ่งนี้จะไม่มองหาตารางโหนด แต่จะค้นหาcms_connectorตารางในcmsฐานข้อมูลของฉันซึ่งไม่มีอยู่

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บอกว่ากุญแจภายใน $ data ...

ควรเป็นชื่อฐานข้อมูลจริงของตาราง (ไม่รวมคำนำหน้า) แต่มันอาจเป็นชื่อแทนตราบใดที่ข้อมูลการเข้าร่วม (อธิบายในภายหลัง) มีชื่อจริงของตาราง

ฉันไม่ต้องการเข้าร่วมฉันต้องการสร้างตารางฐานจากตารางโหนดของฐานข้อมูลอื่น แต่ฉันลองสิ่งนี้อยู่ดี (แม้ว่ามันจะไม่สมเหตุสมผลจริงๆ) หลังจากเห็น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',
  ),
);

ฉันค้นหารอบ ๆ ที่นี่ทำและ Stack Overflow แต่สิ่งที่ฉันค้นหาส่วนใหญ่คือ Some-other-database-to-Drupal ไม่ใช่ Drupal-to-Drupal

ฉันพบ/drupal/12736/using-nodes-from-another-site-databaseคำถามที่นี่ แต่มันเกี่ยวกับการอ้างอิงโหนดและยังไม่ได้รับคำตอบ

ฉันคิดเกี่ยวกับการใช้บริการเพื่ออ่าน XML / JSON จากไซต์รวมศูนย์ แต่มีข้อ จำกัด มากมายสำหรับวิธีการดังกล่าว ฉันไม่ต้องการซิงโครไนซ์โหนดด้วยเช่นกัน


1
ฉันได้เพิ่มความคืบหน้าอีกเล็กน้อยโดยการสร้างปลั๊กอินแบบสอบถามที่กำหนดเองที่ขยาย views_plugin_query_default ฉันเพิ่มตัวเลือกในการตั้งค่าแบบสอบถามที่สลับมุมมองและดึงข้อมูลจากฐานข้อมูลอื่น ฉันสามารถดึงชื่อโหนดและข้อมูลอื่น ๆ จากตารางโหนดในฐานข้อมูลอื่นยังคงทำงานเพื่อรับฟิลด์
Cottser

คำตอบ:


1

พิจารณาดูที่โมดูลForena มันสามารถใช้ในการค้นหา (ไม่ปรับปรุง) ข้อมูลในฐานข้อมูลอื่น ๆ รองรับรูปแบบ DBMS หลากหลายเช่นฐานข้อมูลอื่นของ Drupal

Forena สร้างขึ้นจากแนวคิดของการใช้ SQL เพื่อดึงข้อมูลออกจากฐานข้อมูลและใช้ XHTML และ CSS เพื่อจัดรูปแบบลงในรายงานทางเว็บ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ Forena มีเอกสารให้เลือก 2 ประเภท:

  • เอกสารชุมชน
  • เอกสารที่มาพร้อมกับ Forena ซึ่งคุณสามารถเข้าถึงได้ทันทีหลังจากติดตั้งและเปิดใช้งานโมดูล ชำระเงินที่ไซต์สาธิตสำหรับตัวอย่างออนไลน์ของปัจจุบัน:

    • เอกสารของ Forena - ใช้ลิงก์ 'เอกสารการรายงาน' หรือไปที่ลิงก์ / รายงาน / ความช่วยเหลือที่เกี่ยวข้อง
    • ตัวอย่าง Forena - ใช้ลิงก์ 'การรายงานตัวอย่าง' หรือไปที่ลิงก์ / รายงาน / ตัวอย่างที่เกี่ยวข้อง (ตัวอย่างเหล่านี้ทำงานได้อย่างสมบูรณ์ดังนั้นให้แน่ใจว่าได้ทำการทดสอบกับมันเช่นการเจาะลึกลงบนตัวอย่างกราฟ SVG)

การเปิดเผยข้อมูล: ฉันเป็นผู้ร่วมพิทักษ์ของ Forena
ฉันหวังว่านี่จะไม่ละเมิดนโยบายของไซต์เกี่ยวกับการโปรโมตตนเอง


0

คุณสามารถส่งออกเนื้อหาโดยใช้โมดูลViewsเพื่อส่งออกข้อมูลและนำเข้าเนื้อหาโดยใช้โมดูลFeeds (คุณสามารถนำเข้าเป็นระยะโดยใช้โมดูลกฎ )



-1

ตัวเลือกหนึ่งโดยใช้ไฟล์ settings.php กำหนดค่าอินสแตนซ์ฐานข้อมูลที่ 2 ในไฟล์ settings.php หลังจากตั้งค่าอินสแตนซ์ให้ใช้ db นั้นโดยใช้db_set_active('drupal2')ฟังก์ชั่นและทำทุกอย่างกับ db ตัวที่สองของคุณ

เช่น

$databases = array(
    'default' =>
    array(
        'default' =>
        array(
            'database' => 'drupal1',
            'username' => 'root',
            'password' => '',
            'host' => 'localhost',
            'port' => '',
            'driver' => 'mysql',
            'prefix' => '',
        ),
    ),
    'cms' => // additional database starts here
    array(
        'default' =>
        array(
            'database' => 'cms',
            'username' => 'root',
            'password' => '',
            'host' => 'localhost',
            'port' => '',
            'driver' => 'mysql',
            'prefix' => '',
        )
    ),
);

ในโมดูลของคุณคุณสามารถใช้ฐานข้อมูลทั้งสองด้านล่าง:

db_set_active('cms');
$node = node_load(10);
var_dump($node):

สิ่งนี้ไม่ช่วยในเรื่อง Views แม้ว่า…
Cottser

คุณได้ลองใช้'database' => 'cms'แล้วโดยใช้cmsคีย์ที่กำหนดค่าด้วยcmsฐานข้อมูลในsettings.phpไฟล์
AshwinP
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.