Вы здесь

Показ материалов, полученных из другой базы, в интерфейсе темы Drupal

0

Ситуация. Есть сторонняя БД, где хранится каталог продукции.
По запросу БД отдает несколько типов страниц:
главная каталога
раздел каталога (около 100)
карточка товара (тысячи их)

У каждой такой страницы есть свой URL, например, /catalog/razdel/tovar
Но при переходе на эту страницу Drupal, обращается к своей базе, не находит там ноду и выдает 404.

Как это решить?
Вариант импортировать базу не вариант, т.к. она должна работать в онлайн.

PS. не уверен что удачно сформулировал заголовок вопроса)

Версия Drupal: 
7.x
Вопрос задан 18.04.2016 - 11:40

Ответы

1

Я бы в модуле создал страницы:

function custom_menu() {
    $items['catalog'] = array(
      'page callback' => 'custom_catalog_callback',
      'access callback' => TRUE,
    );
    $items['catalog/%'] = array(
      'page callback' => 'custom_razdel_callback',
      'access callback' => TRUE,
      'page arguments' => array(1),
    );
    $items['catalog/%/%'] = array(
      'page callback' => 'custom_tovar_callback',
      'access callback' => TRUE,
      'page arguments' => array(1, 2),
    );
    return $items;
}

function custom_catalog_callback() {
    return 'Страница каталога';
}

function custom_razdel_callback($arg1) {
    return 'Страница раздела ' . $arg1;
}

function custom_tovar_callback($arg1, $arg2) {
    return 'Страница товара ' . $arg2;
}

И в каждом обработчике страницы уже описал бы логику: запрос к удаленной БД.
Или можно считать прямо html с удаленного сайта функцией file_get_contents или какой нибудь PHP библиотекой-парсером.

Ответ дан 18.04.2016 - 14:06

Правильно ли я понимаю, что загружая страницу catalog/%/% Друпал будет исполнять код, а не перекидывать на 404?

Комментарий оставлен 18.04.2016 - 14:58

Да, для catalog/%/% Друпал будет выполнять код, который вы напишите в функции custom_tovar_callback.
Там сделаете запрос к базе или через PHP распарсите страницу с удаленного сайта.

Комментарий оставлен 18.04.2016 - 15:56
0

Если надо только отображать, то можно и через views провернуть, добавив внешнюю базу через Views Database Connector или аналоги.

Страницы с товарами - views с контекстными фильтрами. Посмотрите, может и получится.

Многое зависит от того, как устроена сторонняя база.
Если есть каталог, то наверно и корзина должна быть и оформление заказа... И дело просто отображением не ограничится.

Ответ дан 18.04.2016 - 13:20
Аватар пользователя Advin
Advin
27