Views kullanarak başka bir Drupal veritabanından düğüm yükleme


12

Views.php 'cms' bir anahtar ile tanımlanan başka bir Drupal veritabanından düğümleri yüklemek için Views kullanmaya çalışıyorum. Her iki site de Drupal 7'dir. Diğer veritabanı, içerik deposu veya merkezi CMS işlevi gören farklı bir Drupal yüklemesidir. Amacım, hedef sitede yeni bir görünüm türü / grubu oluşturmaktır. Bu nedenle, bir site oluştururken site yapısı "İçerik" yerine "CMS İçeriği" ni seçebilir. Bir site oluşturucunun, her içerik türündeki tüm alanlarla ilgili görünümleri söylemek zorunda kalsam bile, normalde merkezi CMS sitesinden içerik türlerine ve içeriğe dayalı bir görünüm oluşturabileceğini umuyorum.

Hook_views_data () uygulamamda 'database' anahtarını ayarladım, ancak $ data ['node'] geçersiz kılmadan düğüm tablosundan nasıl okunacağını anlayamıyorum.

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;
}

Tabii ki bu bir düğüm tablosu aramıyor, veritabanımda var olmayan bir cms_connectortablo arıyor 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 içindeki anahtarın…

tablonun gerçek veritabanı adı olmalıdır (önek dahil değil), ancak birleştirme bilgileri (daha sonra açıklanacaktır) tablonun gerçek adını içerdiği sürece bir takma ad olabilir.

Aslında katılmak istemiyorum, diğer veritabanının düğüm tablosundan bir temel tablo oluşturmak istiyorum. Ama http://drupal.org/node/1713010#comment-6310438'i gördükten sonra yine de (gerçekten mantıklı olmasa da) denedim :

$data['cms_connector']['table']['join'] = array(
  'node' => array(
    'left_field' => 'nid',
    'left_table' => 'node',
    'field' => 'nid',
    'table' => 'node',
  ),
);

Burada, yaptım ve Stack Overflow aradım, ama bulduğum çoğu Drupal-Drupal değil, bazı-diğer-veritabanı-Drupal olduğunu.

Https://drupal.stackexchange.com/questions/12736/using-nodes-from-another-site-database sorusunu burada buldum , ancak düğüm referanslarıyla ilgili ve cevapsız.

Merkezi siteden XML / JSON okumak için Hizmetleri kullanmayı düşündüm, ancak bu yaklaşımın önünde çok fazla engel var. Düğümleri de gerçekten senkronize etmek istemiyorum.


1
Views_plugin_query_default genişleten özel bir sorgu eklentisi oluşturarak biraz daha ilerleme kaydettim. Görünümü değiştiren ve diğer veritabanından veri çeken sorgu ayarlarına bir seçenek ekledim. Hala alanlarını almak için çalışan, diğer veritabanındaki düğüm tablosundan düğüm başlıkları ve diğer verileri çekebilir.
Cottser

Yanıtlar:


1

Forena modülüne bakmayı düşünün . Diğer veritabanlarındaki verileri sorgulamak (güncellemek değil) için kullanılabilir. Başka bir Drupal veritabanı gibi çeşitli DBMS formatları da desteklenir.

Forena, veritabanından veri almak için SQL kullanma ve web raporlarında biçimlendirmek için XHTML ve CSS kullanma fikri üzerine inşa edilmiştir. Forena hakkında daha fazla bilgi için 2 tür belge mevcuttur:

  • Topluluk belgeleri .
  • Modülün kurulumundan ve etkinleştirilmesinden hemen sonra erişebileceğiniz Forena ile birlikte gelen belgeler. Ödemeye demo sitesini akımının bir online örneğin:

    • Forena belgeleri - 'Raporlama belgeleri' bağlantısını kullanın veya göreli bağlantı / raporlar / yardım'ı ziyaret edin.
    • Forena örnekleri - 'Raporlama örnekleri' bağlantısını kullanın veya göreli bağlantı / raporlar / örnekleri ziyaret edin (bu örnekler tamamen işlevseldir, bu nedenle SVG Graph örneğinde bulunan sondajlar gibi onunla biraz deneme yaptığınızdan emin olun).

Açıklama: Forena'nın ortak yardımcısıyım ,
umarım bu sitenin kendini tanıtmaya yönelik politikasını ihlal etmez .


0

Verileri dışa aktarmak ve Feeds modülünü kullanarak içe aktarmak için Views modülünü kullanarak içeriği dışa aktarabilirsiniz ( Kurallar modülünü kullanarak periyodik olarak içe aktarabilirsiniz ).



-1

Settings.php dosyasını kullanan bir seçenek. Settings.php dosyasında 2. veritabanı örneğini yapılandırın. Örnek kurduktan sonra db_set_active('drupal2')işlevi kullanarak o db kullanın ve ikinci db ile her şeyi yapın.

Örneğin

$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' => '',
        )
    ),
);

modülünüzde her iki veritabanını da aşağıdaki gibi kullanabilirsiniz:

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

Bu Views ile yardımcı olmaz ...
Cottser

Dosyada veritabanı 'database' => 'cms'ile cmsyapılandırılmış anahtar ile denediniz mi? cmssettings.php
AshwinP
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.