Загрузка views_accordion через ajax-запрос

В настоящее время я загружаю свой вид через запрос ajax в моем пользовательском модуле:

$.getJSON('/reports/summarized-progress/get_output_activities/'+nid, null,activities);

Страница drupal для вышеуказанного запроса возвращает следующее:

$output_arg=arg(3);
$html="";
$activities=views_embed_view('activities','block_activities',$output_arg); //this returns a view accordion view
if(!empty($activities)) {
$html.='';
$html.=$activities;
$html.='';
}
drupal_json_output(array('data'=>$html));

Аккордеонная / разборная функциональность не работает с загруженным контентом. Любые идеи, нужно ли мне включать через module_load_include какие-либо файлы в моем пользовательском модуле? Что нужно сделать, чтобы это работало?

1 ответ

Решение

Всякий раз, когда вы загружаете контент через ajax-запрос, вы должны убедиться, что необходимые настройки / файлы js загружены вместе с вашим контентом.

В большинстве случаев статическая переменная $ javascript, которая заполняется во время загрузки содержимого через drupal_add_js (), не отправляется в браузер, но вы можете сделать это вручную:

  • Вот рабочий пример Drupal 6:
  // Получить содержимое просмотра.
  $view = views_embed_view($name, $display_id);

  // Получить данные JavaScript.
  $js = drupal_add_js(NULL, NULL, 'header');

  // Подготовить данные для обработки на стороне клиента.
  $settings = drupal_to_js(call_user_func_array('array_merge_recursive', $js['setting']));

  // Сообщаем клиенту расширить Drupal.settings собранными $ settings.
  $ script = '