Drupal: Подключение и использование нескольких баз
Опубликовано: 09.10.2017
Здравствуйте.
Мультиязычный сайт на WordPress. Плагин Polylang. Часть первая. Настройка и установка
Сегодня я коснусь вопроса подключения нескольких баз данных в системе Drupal 7 . Почему именно Drupal 7? Да потому, что в ней стало очень просто это делать, встроенными средствами системы. То есть мы можем подключить в системе одновременно несколько баз и использовать их в процессе работы. Один из примеров такой работы - это модуль DBTNG , который позволяет мигрировать структуру и данные между различными базами данных (к примеру с SQLite на MySQL). Также возможно использовать базы данных, созданные не для CMS Drupal. В этой статье мы рассмотрим как подключить две базы, а также как с ними работать.
Подключаем две базы
Реадктируем файл settings.php в папке sites/default
<?php $databases = array ( 'default' => array ( 'default' => array ( 'database' => 'drupal1', 'username' => 'root', 'password' => '<ваш-пароль>', 'host' => 'localhost', 'port' => '', 'driver' => 'mysql', 'prefix' => '', ), ),'custom' => array ( 'default' => array ( 'database' => 'drupal2', 'username' => 'root', 'password' => '<ваш-пароль>', 'host' => 'localhost', 'port' => '', 'driver' => 'mysql', 'prefix' => '', ) ) ); ?>Используем базы в своем коде
Используем подключенные базы в коде своего модуля или темы. В процессе работы Drupal использует конфигурацию default . Таким образом, если нам нужно использовать базу, подключенную вручную, мы делаем активной требуемую конфигурацию и выполняем нужные операции.
<?php db_set_active('custom'); $result = db_query("SELECT nid, title, created FROM {node} ORDER BY created ASC LIMIT 0, 10"); // $result содержит данные запроса к базе данных, подключенной вручную db_set_active('default'); $result = db_query("SELECT nid, title, created FROM {node} ORDER BY created ASC LIMIT 0, 10"); // $result содержит данные запроса к основной базе drupal 7 ?>Теперь мы сможем подключать базы данных других систем (Wordpress, Joomla! и т.д.)