दृश्य का उपयोग करके एक अन्य Drupal डेटाबेस से नोड लोड हो रहा है


12

मैं सेटिंग्स में परिभाषित एक अन्य Drupal डेटाबेस से नोड्स लोड करने के लिए दृश्यों का उपयोग करने की कोशिश कर रहा हूं। 'सेमी' की कुंजी के साथ। दोनों साइटें Drupal 7 हैं। दूसरा डेटाबेस एक अलग Drupal इंस्टॉल है जो एक कंटेंट रिपॉजिटरी या सेंट्रलाइज्ड CMS के रूप में काम कर रहा है। मेरा लक्ष्य गंतव्य साइट पर एक नया दृश्य प्रकार / समूह बनाना है, इसलिए साइट बनाते समय एक दृश्य "सामग्री" के बजाय "सीएमएस सामग्री" चुन सकता है। मुझे उम्मीद है कि साइट बिल्डर तब केंद्रीकृत सीएमएस साइट से सामग्री प्रकार और सामग्री के आधार पर सामान्य रूप से एक दृश्य बनाने में सक्षम होगा, भले ही मुझे प्रत्येक सामग्री प्रकार में सभी क्षेत्रों के बारे में विचार बताना हो।

मेरे hook_views_data () कार्यान्वयन में मैंने 'डेटाबेस' कुंजी सेट की है, लेकिन $ डेटा ['नोड'] को ओवरराइड किए बिना नोड टेबल से पढ़ने का तरीका समझ नहीं सकता।

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 कहते हैं कि $ डेटा के भीतर की…

तालिका का वास्तविक डेटाबेस नाम होना चाहिए (उपसर्ग सहित नहीं), लेकिन यह एक उपनाम हो सकता है जब तक कि सम्मिलित जानकारी (बाद में बताई गई) में तालिका का वास्तविक नाम शामिल हो।

मैं वास्तव में जॉइन नहीं करना चाहता, मैं दूसरे डेटाबेस के नोड टेबल से एक बेस टेबल बनाना चाहता हूं। लेकिन मैं देखने के बाद यह वैसे भी (भले ही यह वास्तव में मतलब नहीं है) की कोशिश की 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',
  ),
);

मैंने इधर-उधर खोजा है, करो, और स्टैक ओवरफ्लो करो, लेकिन जो मुझे मिल रहा है, उसमें से कुछ ड्रुपल-टू-ड्रुपल है, कुछ अन्य-डेटाबेस-टू-ड्रुपल है।

मुझे यहाँ /drupal/12736/using-nodes-from-another-site-database प्रश्न मिला , लेकिन यह नोड संदर्भों के बारे में है, और अनुत्तरित है।

मैंने केंद्रीकृत साइट से XML / JSON को पढ़ने के लिए सेवाओं का उपयोग करने के बारे में सोचा था, लेकिन उस दृष्टिकोण के लिए बहुत अधिक बाधाएं हैं। मैं वास्तव में नोड्स को सिंक्रनाइज़ करना नहीं चाहता।


1
मैंने एक कस्टम क्वेरी प्लगइन बनाकर कुछ अधिक प्रगति की है जो views_plugin_query_default तक फैली हुई है। मैंने क्वेरी सेटिंग्स के लिए एक विकल्प जोड़ा है जो दृश्य को चालू करता है और अन्य डेटाबेस से डेटा खींचता है। मैं नोड्स और अन्य डेटा को नोड तालिका से दूसरे डेटाबेस में खींच सकता हूं, फिर भी फ़ील्ड प्राप्त करने पर काम कर रहा हूं।
कोट्सर

जवाबों:


1

Forena मॉड्यूल को देखने पर विचार करें । इसका उपयोग अन्य डेटाबेस में डेटा को क्वेरी (अपडेट नहीं) करने के लिए किया जा सकता है। विभिन्न DBMS स्वरूपों का समर्थन किया जाता है, जैसे कि एक अन्य Drupal डेटाबेस भी।

Forena एक डेटाबेस से डेटा प्राप्त करने और इसे वेब रिपोर्ट में प्रारूपित करने के लिए XHTML और CSS का उपयोग करने के लिए SQL का उपयोग करने के विचार से बनाया गया है। Forena के बारे में अधिक जानकारी के लिए, 2 प्रकार के दस्तावेज उपलब्ध हैं:

  • सामुदायिक प्रलेखन
  • दस्तावेज़ीकरण जो कि फोर्ना के साथ आता है, जिसे आप मॉड्यूल के इंस्टॉल और सक्षम होने के बाद सही तरीके से एक्सेस कर सकते हैं। वर्तमान के ऑनलाइन उदाहरण के लिए डेमो साइट चेकआउट करें :

    • Forena प्रलेखन - लिंक 'रिपोर्टिंग प्रलेखन' का उपयोग करें या रिश्तेदार लिंक / रिपोर्ट / मदद पर जाएँ।
    • Forena नमूने - 'रिपोर्टिंग नमूने' लिंक का उपयोग करें या संबंधित लिंक / रिपोर्ट / नमूने पर जाएं (ये नमूने पूरी तरह कार्यात्मक हैं, इसलिए इसके साथ थोड़ा प्रयोग करना सुनिश्चित करें, जैसे कि SVG ग्राफ़ नमूने पर उपलब्ध ड्रिल डाउन)।

प्रकटीकरण: मैं फ़ॉरेना का सह -संरक्षक हूं,
मुझे आशा है कि यह स्व-प्रचार पर साइट की नीति का उल्लंघन नहीं करता है ।


0

आप डेटा को निर्यात करने के लिए व्यूज़ मॉड्यूल का उपयोग करके सामग्री का निर्यात कर सकते हैं और उन्हें फ़ीड मॉड्यूल का उपयोग करके आयात कर सकते हैं (आप समय-समय पर नियम मॉड्यूल का उपयोग करके आयात कर सकते हैं )।



-1

Settings.php फ़ाइल का उपयोग कर एक विकल्प। सेटिंग्स.php फ़ाइल में दूसरा डेटाबेस उदाहरण कॉन्फ़िगर करें। उदाहरण सेट करने के बाद db_set_active('drupal2')फ़ंक्शन का उपयोग करके db और अपने दूसरे 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):

हालांकि यह दृश्य के साथ मदद नहीं करता ...
Cottser

क्या आपने फ़ाइल में डेटाबेस के 'database' => 'cms'साथ cmsकुंजी को कॉन्फ़िगर किया है । cmssettings.php
अश्विन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.