Здравствуйте!
Имеется php скрипт:
<?php
function getevents($tid) {
if (!empty($tid)) {$tid=0}
$query = db_select('node','n');
$query->join('field_data_field_date','fd','n.nid = fd.entity_id');
$query->join('field_data_field_endtime','fed','n.nid = fed.entity_id');
$query->join('field_data_field_taxonomy','ftx','n.nid = ftx.entity_id');
/* здесь код получения данных из БД, для рассмотрения не нужен */
foreach ($q as $record) {
/* здесь кода заполнения переменных */
$result .= "<div class='$et event c$cat $when'><div class='conteiner'>";
$result .= "<div class='datetime'><span class='date_num'>".date('d '.$month[date('n',$nd)-1],$nd)."</span> / ".date('H:i ',$nd)."</div>";
$result .= "<h2><a href='".$url."'>".$title."</a></h2>";
if ($node->field_image[und][0][filename]!="") {
$result .= "<div class='picture'><img src='/sites/default/files/events/".$node->field_image[und][0][filename]."'></div>";
}
$result .= "<div class='teaser'><p>".$body."</div>";
$result .= "<div class='comment_count $notLoggin'><a href='".$url."#comments'>Оставить отзыв</a></div>";
$result .= "</div></div>";
}
unset($record);
echo $result;
}
?>
он работает, если вставить его в тело ноды и указать tid. Пусть и написан криво, но не суть, пока.
Задача: при клике по ссылке, обращаться к скрипту через AJAX, передав в него $tid, получить результат и вставить на сайт.
Пробовал обычной связкой JQuery+Ajax, но получал ошибку http 500 internal server error. Поискал по нету, понял, что так нельзя, нужно использовать drupal.ajax и hook_menu(). Почитал всякие доки, но ничего не понял.
Что собственно непонятно?
1. Как правильно написать хук?
2. Я так понимаю, описанная выше функция — это и есть page callback или это все таки delivery callback? Как правильно переписать ее вывод?
Комментарии
Правильные ajax запросы в Drupal 7
Алгоритм, следующий:
Почитать: