Estoy tratando de usar Vistas para cargar nodos de otra base de datos de Drupal definida en settings.php con una clave de 'cms'. Ambos sitios son Drupal 7. La otra base de datos es una instalación de Drupal diferente que actúa como un depósito de contenido o CMS centralizado. Mi objetivo es crear un nuevo tipo / grupo de vistas en el sitio de destino, por lo que al crear una vista, la construcción del sitio puede elegir "Contenido CMS" en lugar de "Contenido". Espero que un creador de sitios pueda crear una vista normalmente basada en los tipos de contenido y el contenido del sitio centralizado de CMS, incluso si tengo que contar las vistas sobre todos los campos en cada tipo de contenido.
En mi implementación hook_views_data () configuré la clave 'base de datos', pero no puedo entender cómo leer desde la tabla de nodos sin anular $ data ['nodo'].
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;
}
Por supuesto, esto no busca una tabla de nodos, busca una cms_connector
tabla en mi cms
base de datos, que no 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 dice que la clave dentro de $ data ...
debe ser el nombre real de la base de datos de la tabla (sin incluir el prefijo), pero puede ser un alias siempre que la información de unión (explicada más adelante) contenga el nombre real de la tabla.
En realidad no quiero hacer una unión, quiero crear una tabla base a partir de la tabla de nodos de la otra base de datos. Pero intenté esto de todos modos (aunque realmente no tiene sentido) después 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',
),
);
He buscado por aquí, do y Stack Overflow, pero la mayoría de lo que estoy encontrando es Some-other-database-to-Drupal, no Drupal-to-Drupal.
Encontré la /drupal/12736/using-nodes-from-another-site-database pregunta aquí, pero se trata de referencias de nodos y no tiene respuesta.
Pensé en usar los Servicios para leer XML / JSON desde el sitio centralizado, pero hay demasiados obstáculos para ese enfoque. Realmente tampoco quiero sincronizar nodos.
Respuestas:
Considera mirar el módulo Forena . Se puede utilizar para consultar (no actualizar) los datos en otras bases de datos. Se admiten varios formatos DBMS, como también otra base de datos Drupal.
Forena se basa en la idea de usar SQL para extraer datos de una base de datos y usar XHTML y CSS para formatearlos en informes web. Para obtener más detalles sobre Forena, hay 2 tipos de documentación disponibles:
Documentación que viene con Forena, a la que puede acceder inmediatamente después de instalar y habilitar el módulo. Consulte el sitio de demostración para ver un ejemplo en línea de lo actual:
Divulgación: Soy co- mantenedor de Forena,
espero que esto no viole la política de autopromoción del sitio .
fuente
Puede exportar contenido usando el módulo Vistas para exportar datos e importarlos usando el módulo Feeds (puede importar periódicamente usando el módulo Reglas ).
fuente
Revisa estos módulos:
EntityFieldQuery visualiza backend o datos del servicio web
fuente
Una opción usando el archivo settings.php. Configure la segunda instancia de la base de datos en el archivo settings.php. Después de configurar la instancia, use esa
db_set_active('drupal2')
función db usando y haga cualquier cosa con su segunda base de datos.p.ej
en su módulo puede usar ambas bases de datos de la siguiente manera:
fuente
'database' => 'cms'
, con lacms
clave configurada con lacms
base de datos en elsettings.php
archivo?