Загрузка 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 = '