Заставляем page manager отдавать страницы аяксом

Для начала отвечу на вопрос зачем может понадобиться отдавать контент страницы ajax'ом. Все просто, в моем случае возникла необходимость показывать контент панели в модальном окне ctools'а.

Решение совсем простое - один хук hook_ctools_render_alter.

<?php

function HOOK_ctools_render_alter($info, $page, $context) {
  if ($page == 1 && !empty($context['handler']->task) && $context['handler']->task == 'page'
    && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    ctools_include('modal');
    ctools_include('ajax');

    $commands = array();
    $commands[] = ctools_modal_command_display($info['title'], $info['content']);

    print ajax_render($commands);
    drupal_exit();
  }
}

Создаем новый модуль или добавляем хук в свой созданный ранее.

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.