Estou tentando usar o Views para carregar nós de outro banco de dados Drupal definido em settings.php com uma chave de 'cms'. Os dois sites são o Drupal 7. O outro banco de dados é uma instalação diferente do Drupal, que atua como repositório de conteúdo ou CMS centralizado. Meu objetivo é criar um novo tipo / grupo de visualizações no site de destino, portanto, ao criar uma visualização, a compilação do site pode escolher "Conteúdo do CMS" em vez de "Conteúdo". Espero que um construtor de sites possa criar uma exibição normalmente com base nos tipos de conteúdo e no conteúdo do site centralizado do CMS, mesmo que eu precise fornecer exibições sobre todos os campos em cada tipo de conteúdo.
Na minha implementação hook_views_data (), configurei a chave 'database', mas não consigo descobrir como ler a tabela de nós sem substituir $ 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;
}
Claro que isso não procura uma tabela de nós, mas sim uma cms_connector
tabela no meu cms
banco de dados, que não existe.
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 diz que a chave em $ data…
deve ser o nome real do banco de dados da tabela (sem incluir o prefixo), mas pode ser um alias desde que as informações de junção (explicadas mais adiante) contenham o nome real da tabela.
Na verdade, não quero fazer uma junção, quero criar uma tabela base a partir da tabela de nós do outro banco de dados. Mas tentei mesmo assim (mesmo que não faça sentido) depois de ver 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',
),
);
Eu pesquisei por aqui, fiz e Stack Overflow, mas a maior parte do que estou descobrindo é Some-other-database-to-Drupal, não Drupal-to-Drupal.
Encontrei a questão /drupal/12736/using-nodes-from-another-site-database aqui, mas é sobre referências de nós e não foi respondida.
Pensei em usar o Services para ler XML / JSON no site centralizado, mas há muitos obstáculos nessa abordagem. Também não quero sincronizar nós.
Respostas:
Considere olhar para o módulo Forena . Pode ser usado para consultar (não atualizar) os dados em outros bancos de dados. Vários formatos de DBMS são suportados, como outro banco de dados Drupal também.
O Forena foi criado com a idéia de usar o SQL para obter dados de um banco de dados e usar XHTML e CSS para formatá-los em relatórios da web. Para mais detalhes sobre o Forena, estão disponíveis 2 tipos de documentação:
Documentação que acompanha o Forena, que você pode acessar logo após a instalação e ativação do módulo. Confira o site de demonstração para obter um exemplo online do atual:
Divulgação: sou co- mantenedor da Forena,
espero que isso não viole a política de autopromoção do site .
fonte
Você pode exportar conteúdo usando o módulo Exibições para exportar dados e importá-los usando o módulo Feeds (você pode importar periodicamente usando o módulo Regras ).
fonte
Verifique estes módulos:
Exibições de EntityFieldQuery ou dados de serviço da Web
fonte
Uma opção usando o arquivo settings.php. Configure a segunda instância do banco de dados no arquivo settings.php. Após configurar a instância, use esse banco de dados usando a
db_set_active('drupal2')
função e faça qualquer coisa com seu segundo banco de dados.por exemplo
No seu módulo, você pode usar os dois bancos de dados, como abaixo:
fonte
'database' => 'cms'
, com acms
chave configurada com ocms
banco de dados nosettings.php
arquivo.