Я пытаюсь использовать Views для загрузки узлов из другой базы данных Drupal, определенной в settings.php, с ключом 'cms'. Оба сайта являются Drupal 7. Другая база данных - это другая установка Drupal, которая действует как хранилище контента или централизованная CMS. Моя цель - создать новый тип / группу представлений на целевом сайте, поэтому при создании представления для сборки сайта можно выбрать «Содержимое CMS» вместо «Содержимое». Я надеюсь, что тогда создатель сайта сможет создать представление, обычно основанное на типах контента и контенте с централизованного сайта CMS, даже если мне придется рассказывать представления обо всех полях в каждом типе контента.
В моей реализации hook_views_data () я установил ключ 'database', но не могу понять, как читать из таблицы узлов без переопределения $ 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',
),
);
Я искал здесь, делаю, и переполнение стека, но большая часть того, что я нахожу, - это «Некоторые другие базы данных в Drupal», а не «Drupal-to-Drupal».
Я нашел здесь /drupal/12736/using-nodes-from-another-site-database , но он касается ссылок на узлы и остается без ответа.
Я думал об использовании служб для чтения XML / JSON с централизованного сайта, но у этого подхода слишком много препятствий. Я тоже не хочу синхронизировать узлы.
Ответы:
Рассмотрите возможность просмотра модуля Forena . Он может использоваться для запроса (а не обновления) данных в других базах данных. Поддерживаются различные форматы СУБД, например, другая база данных Drupal.
Forena построена на идее использования SQL для извлечения данных из базы данных и использования XHTML и CSS для форматирования их в веб-отчеты. Для получения более подробной информации о Forena доступны 2 вида документации:
Документация, поставляемая с Forena, доступ к которой можно получить сразу после установки и включения модуля. Оформить демонстрационный сайт для онлайн-пример текущего:
Раскрытие информации: я являюсь со- держателем Forena,
я надеюсь, что это не нарушает политику сайта по саморекламе .
источник
Вы можете экспортировать контент с помощью модуля Views, чтобы экспортировать данные и импортировать их с помощью модуля Feeds (вы можете периодически импортировать с помощью модуля Rules ).
источник
Проверьте эти модули:
EntityFieldQuery Представления Backend или Данные веб-службы
источник
Один вариант с использованием файла settings.php. Настройте второй экземпляр базы данных в файле settings.php. После настройки экземпляра используйте эту базу данных с помощью
db_set_active('drupal2')
функции и делайте что-нибудь со вторым базой данных.например
в вашем модуле вы можете использовать обе базы данных, как показано ниже:
источник
'database' => 'cms'
, сcms
ключом, настроенным сcms
базой данных вsettings.php
файле.