Помогите разобраться с views_embed_view

Главные вкладки

Аватар пользователя Alex554 Alex554 13 января 2013 в 13:57

Для динамической подгрузки views сделал модуль и при нажатии на нужную кнопку подгружается views через:
views_embed_view('list_banks','default', $kredit_type);
return drupal_json_output(array('content'=>$viewsoutput, 'li_num'=>$num));
exit;
Увидеть можно тут http://1k.vitalavita.ru/ - верхнее меню.

Но дело в том, что в подгруженном виевсе есть раскрытый фильтр (exposed filters) с аутосабмитом (autosubmitte).
Вот этот виевс - http://1k.vitalavita.ru/bank/list , тут аутосубмит полностью работает.
Но в подгружаемый не работает аутосубмит в раскрытом фильтре - http://1k.vitalavita.ru/
Пробовал выгружать его так:
$view = views_get_view('list_banks','default', $kredit_type);
$view->override_path = 'node/2';
$viewsoutput = $view->preview();
return drupal_json_output(array('content'=>$viewsoutput, 'li_num'=>$num));

Пожалуйста, подскажите что делать?

Комментарии

Аватар пользователя Alex554 Alex554 15 января 2013 в 13:32

А возможно добавить блок, на тех страницах, где это нужно, в котором указать загрузку этих скриптов и прочее, что нужно и уже когда подгружается views уже работало все?

Аватар пользователя dgastudio dgastudio 15 января 2013 в 16:37

у тс через аякс подгружается html views (не важно, только exposed filter или всего views). Каким образом embed_views_exposed_form может ему помочь?

Аватар пользователя goodboy goodboy 15 января 2013 в 16:51

kervi, я не знаю как может помочь. Может, на мысль какую натолкнет. Просто самому интересно решение задачи.

Аватар пользователя dgastudio dgastudio 15 января 2013 в 16:39

Alex554, как простейший вариант, в php коде страницы, загрузите изначально все нужные Вам views и фильтры к ним. После, через js просто показывайте нужные Вам div.

Аватар пользователя Alex554 Alex554 16 января 2013 в 11:33

Приступил к опытам над выводом виевса в Drupale 7, как найду выход, отпишусь.
Если у кого еще есть мысли, пишите, буду благодарен.

Аватар пользователя FORTIS FORTIS 18 января 2013 в 0:01

ничего тут страшного нет,
если речь о views_autorefresh (не принципиально) из модуля views_hacks то:
вам нужно предварительно на этой странице подключить views_hacks/views_autorefresh/views_autorefresh.js - можно это сделать сразу при загрузке страницы, а можно при необходимости воспользоваться конструкцией типа:

   
var views_hacks_path  = '...';
$.ajax({
      url: views_hacks_path + '/views_autorefresh/views_autorefresh.js',
      dataType: 'script',
      cache: true,
      success: function(data, textStatus, jqXHR) {
        // ...
      }
    });

затем после выполнения запроса (третий параметр $.get) и вставки возвращенного вам кода в страницу - нужно выполнить:

var context = '.view'; // селектор вашего вьюс
 Drupal.attachBehaviors(context);
Аватар пользователя FORTIS FORTIS 18 января 2013 в 0:07

еще как альтернатива (может не сработать) это:
1. написать свой модуль который добавит блок (hook_block_info)
2. содержимое блока = ваш вьюс (тоже что вы возвращаете в колбеке сейчас)
3. поставить модуль ajax_blocks
4. поставить в нужное место этот блок и в его настройках включить аякс

потом в нужный вам момент из js выполняете:

  if (typeof Drupal.settings.ajaxblocks !== 'undefined') {
    Drupal.ajaxblocksSendRequest(Drupal.settings.ajaxblocks, Drupal.settings.ajaxblocks_delay);
  }

и содержимое блоков обновится, но это если содержимое блока формируется без внешнего воздействия Smile

Аватар пользователя Alex554 Alex554 19 января 2013 в 0:22

Видать что то не догнал, это формируется через:
/sites/all/modules/ctools/js/auto-submit.js
Это Drupal 7

На странице, где это работает появляется такая строчка:
jQuery.extend(Drupal.settings, (тут другой код ) . . . . . . . . . . "views":{"ajax_path":"\u002Fviews\u002Fajax", "ajaxViews":{"views_dom_id:905cd780fce79422c54ce374f7429532":{"view_name":"list_banks", "view_display_id":"page", "view_args":"", "view_path":"bank\u002Flist", "view_base_path":"bank\u002Flist", "view_dom_id":"905cd780fce79422c54ce374f7429532", "pager_element":"0"}}}, . . . . . . . . .);