Есть сторонний сервис туда передается запрос и он возвращает некоторые данные. Заносить ответ в БД друпала смысла не имеет, так как инфа будет меняться. Вопрос:
Как вывести на текущую страницу то чего нет в БД друпала, без создания страницы и без занесения в БД?
Комментарии
Не совсем понял что Вы хотите. Можно поподробнее.
И мне кажется для решения этой траблы зашли не с той стороны.
Есть сервис туда отправляем запрос, он возвращает xml. С помощью обработчика приводим в читабельный вид для человека. Заносим ответ в переменную. Как вывести значение этой переменной, на странице с урлом domen_name.ru\otvet, заголовком "результат запроса" и внешним видом согласно теме сайта (блоки, менюшки настройки внешнего вида и т.д.)?
Чисто теоретически можно создать эту страницу пустой, но вот как передать нужные данные при ее построении (учитывая то что они не хранятся в бд)?
создать модуль, через hook_menu создать страницу
hook_menu или hook_block_info(view)
С помощью hook_block_info(view) реализован блок для формирования и отправки запроса.
Будет ли работать подход через hook_menu если мне не нужен сам пункт в меню?
Почитайте hook_menu.
Просто создайте модуль, и в hook_menu реализуйте нужный функционал. а чтобы не выводился пункт в МЕНЮ просто укажите 'type' => MENU_CALLBACK
Создал с помощью hook_menu страницу:
<?php
function mymodule_menu() {
$items = array();
$items['serch'] = array(
'title' => 'Результат поиска',
'page callback' => 'drupal_get_form',
'page arguments' => array('mymodule_proc'),
'type' => MENU_CALLBACK,
);
return $items;
}
function mymodule_proc($defaults_arr){
}
?>Дальше ступор. Предполагаю два варианта решения:
1) Передать из сабмита переменную на страницу, там ее обработать с дальнейшим выводом пользователю.
2) В самом сабмите подготовить html верстку и передать на страницу для дальнейшего отображения. Верстка нужна чтобы красиво вывести табличку. Если подскажите как сюда прикрутить отображение views без обращения к БД буду благодарен.
Соответственно возникают вопросы:
1) Как из сабмита передать переменную на страницу и отобразить ее пользователю после обработки переменной?
2) Как на странице вывести что-то помимо элементов form api? Я не нашел по вышеуказанной ссылке и тут что-то подходящее.
3) Можно ли на странице реализовать какой-либо обработчик входящих данных?
Отвечу сам себе на свои вопросы.
<?php
function mymodule_form_submit($form, &$form_state){
$form_state['redirect'] = array(
'serch',
array(
'query' => array(
'ich' => $form_state['values']['fn_request'],
),
),
);
}
function mymodule_proc(){
$form['result'] = array(
'#markup' => 'Проверка вывода данных<br>'.$_GET["ich"],
);
return $form;
}
?>
Минус данного способа - в адресной строке будет видно переменную (что-то вроде этого domen.ru/serch/?ich=значение переменной).
<?php
$form['result'] = array(
'#markup' => 'Какой-то <b>текст</b>',
);
return $form;
?>
Да.