Заставить работать какую-либо вьюху с ajax не сложно. Достаточно зайти в настройки и установить параметр Use Ajax: Yes.
ajax-view

К сожалению, модуль Views не предоставляет JS API для программного обновления этой вьюхи. Поэтому, пишем свою функцию (комментарии в коде):

function refreshView(view_id, display_id) {
  var instances = Drupal.views.instances,
    views = Drupal.settings.views.ajaxViews;

  // Просматриваем все существующие в JS ajax вьюхи.
  for (var viewDomId in views) {

    // Удостоверяемся, что такое свойство существует и
    // ищем вьюху по переданным view_id и display_id
    if (views.hasOwnProperty(viewDomId)
      && views[viewDomId].view_name == view_id
      && views[viewDomId].view_display_id == display_id) {

      // Получаем JS настройки вьюхи.
      var viewSettings = views[viewDomId],

      // Выясняем dom id вьюхи. Это хэш, который автоматически
      // генерируется на каждое обновление страницы.
        dom_id = viewSettings.view_dom_id,

        // Получаем JS настройки инстанции вьюхи.
        instance = instances['views_dom_id:' + dom_id];

      // Можно раскомментировать и посмотреть в консоли браузера логи.
      // console.log(views[viewDomId]);
      // console.log(instance);

      // Вообще у вьюхи нет понятия "обновить".
      // При запуске триггера на обновление, вьюха загружает следующую страницу.
      // Поэтому мы предварительно делаем текущую страницу-1,
      // а вьюха, загружая следующусю страницу, загрузит текущую.
      instance.refreshViewAjax.options.data.page--;

      // Можно установить какие-либо параметры для контекстного фильтра.
      // К примеру, id пользователя.
      // viewSettings.view_args = 1;

      // Инициируем триггер обновления вьюхи.
      jQuery('.view-dom-id-' + dom_id).triggerHandler('RefreshView');
    }
  }
}

Пример использования:

refreshView('view_system_name', 'block');

P.S.

Функция не предусматривает моменты, когда не существует объекта Drupal.views или Drupal.settings.views. Думаю, ничего страшного не произойдет, но в консоли будут сыпаться ошибки типа TypeError: Drupal.views is undefined.

Функция также не будет работать при Use ajax: No, о котором написано в начале поста.

Другие посты