Вывод стороннего контента без сохранения в бд.

Главные вкладки

Аватар пользователя Lavio Lavio 27 января 2014 в 6:04

Есть сторонний сервис туда передается запрос и он возвращает некоторые данные. Заносить ответ в БД друпала смысла не имеет, так как инфа будет меняться. Вопрос:
Как вывести на текущую страницу то чего нет в БД друпала, без создания страницы и без занесения в БД?

Комментарии

Аватар пользователя whiesam whiesam 27 января 2014 в 9:37

Не совсем понял что Вы хотите. Можно поподробнее.

И мне кажется для решения этой траблы зашли не с той стороны.

Аватар пользователя Lavio Lavio 27 января 2014 в 9:49

whiesam wrote:
Не совсем понял что Вы хотите. Можно поподробнее.

И мне кажется для решения этой траблы зашли не с той стороны.


Есть сервис туда отправляем запрос, он возвращает xml. С помощью обработчика приводим в читабельный вид для человека. Заносим ответ в переменную. Как вывести значение этой переменной, на странице с урлом domen_name.ru\otvet, заголовком "результат запроса" и внешним видом согласно теме сайта (блоки, менюшки настройки внешнего вида и т.д.)?
Чисто теоретически можно создать эту страницу пустой, но вот как передать нужные данные при ее построении (учитывая то что они не хранятся в бд)?

Аватар пользователя Lavio Lavio 27 января 2014 в 11:40

orion76 wrote:
hook_menu или hook_block_info(view)

С помощью hook_block_info(view) реализован блок для формирования и отправки запроса.
Будет ли работать подход через hook_menu если мне не нужен сам пункт в меню?

Аватар пользователя ArmRus ArmRus 27 января 2014 в 11:52

"Lavio" wrote:
С помощью hook_block_info(view) реализован блок для формирования и отправки запроса.
Будет ли работать подход через hook_menu если мне не нужен сам пункт в меню?

Почитайте hook_menu.
Просто создайте модуль, и в hook_menu реализуйте нужный функционал. а чтобы не выводился пункт в МЕНЮ просто укажите 'type' => MENU_CALLBACK

Аватар пользователя Lavio Lavio 28 января 2014 в 8:04

xman0011 wrote:
"Lavio" wrote:
С помощью 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) Можно ли на странице реализовать какой-либо обработчик входящих данных?

Аватар пользователя Lavio Lavio 2 февраля 2014 в 18:24

Отвечу сам себе на свои вопросы.

"Lavio" wrote:
1) Как из сабмита передать переменную на страницу и отобразить ее пользователю после обработки переменной?

<?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=значение переменной).

"Lavio" wrote:
2) Как на странице вывести что-то помимо элементов form api? Я не нашел по вышеуказанной ссылке и тут что-то подходящее.

<?php
$form
['result'] = array(
'#markup' => 'Какой-то <b>текст</b>',
 );
return 
$form;
?>

"Lavio" wrote:
3) Можно ли на странице реализовать какой-либо обработчик входящих данных?

Да.