Здравствуйте!
Подскажите пожалуйста что нужно исправить в коде чтобы по адресу получать только результат работы коллбэка без разметки вообще (без doctype и т.д. в общем надпись 'Hello, world!' на белом фоне)
<?php
/**
* Implements hook_menu()
*/
function mialpet_taobao_project_menu()
{
$items = array(); //return
$items['translator'] = array
(
'access callback' => TRUE,
'description' => t('Переводчик запроса'),
'title' => '',
'page callback' => 'mialpet_taobao_project_page_callback',
'type' => MENU_CALLBACK,
'delivery callback' => 'mialpet_taobao_project_delivery_callback',
);
return $items;
}
function mialpet_taobao_project_page_callback()
{
return 'Hello, world!';
}
function mialpet_taobao_project_delivery_callback($page_callback_result)
{
return $page_callback_result;
}?>
Сейчас он только белый лист выводит, а значит ошибка и связана она с delivery callback (если ее убрать то все выводится как обычно вместе с разметкой).
Комментарии
Не проще необходимые шаблоны tpl.php очистить?
print 'hello world';
drupal_exit();
Не по фен-шую это, логика в представлении, короче тему поменял и лови косяки.
А это и вовсе жесть хотя вариант конечно, если ничего другого то так и сделаю, но хочется чтоб по технологии все. Я просто где-то видел что можно управлять выводом в друпале, вот как? (не шаблонами)
Вообще суть в том что мне нужно по определенному адресу получать результат работы скрипта чтобы хватать его ajax запросом.
Дык есть же друпаловские функции для работы с ajax-ответами. Через hook_menu, если не ошибаюсь, это делается.
Собственно в моем коде hook_menu и есть, но как я понимаю там строятся запросы, а мне нужна страница которая будет формировать ответ.
Да всё равно делается через hook_menu. Только 'type' => MENU_CALLBACK, по-моему, заменяется на другой. Навскидку, к сожалению, не скажу - ajax'ом на друпале уже как-то давно не занимался. В общем, какие-то флаги/признаки коллбеков устанавливаются - т.е. что это именно ajax. В результате возвращается нетемизированный (какбэ - raw) ответ.
Зы. Рекомендую заглянуть в официальную часть, посвящённую ajax'у.
http://api.drupal.org/api/drupal/includes!ajax.inc/group/ajax/7
Это не жесть, а патентованный способ вывести данные не дожидаясь вызова delivery callback.