Перезагрузите представление с помощью AJAX при событии щелчка
У меня есть представление, отображающее таблицу связанных узлов, которая встроена на странице другого узла. Информация, отображаемая во встроенном представлении, периодически меняется, я хочу разрешить пользователю обновлять представление, нажав ссылку или кнопку "Обновить представление" без перезагрузки всей страницы.
Я проверил модуль views-hacks, который предоставляет функцию автоматической перезагрузки, но это не совсем то, что мне нужно.
3 answers
Боюсь, здесь вам не обойтись без небольшого кодирования. Первое, что приходит на ум, - это комбинация
- Форма API для кнопки обновления,
- views_embed_view() для получения текущей версии представления.
- АХАХ замена javascript для замены вывода представления и
Модули Автоматическое обновление представлений , упомянутые вами, или Обновление представлений Ajax могут не делать именно то, что вам нужно, но их код может быть источником вдохновения при реализации обновления представлений.
Я также рекомендую взглянуть на код модуля опроса ядра Drupal, в основном функции poll_choice_js (функция обратного вызова для пути poll/js
) и форма опроса ($form['choice_wrapper']['poll_more']
)
Вам нужно использовать Drupal.behaviors.
Из-за нехватки времени я не тестировал код, но в основном это логика...
Drupal.behaviors.myViewsRefresh = {
attach: function( context , settings) {
var viewName = 'the-name-of-your-views';
// Your views should be Ajax enabled,
// then it will be available as a property of the Drupal object
// like so...
var instances = Drupal.views.instances;
var yourViews;
// then you simply need to iterate thru the various
// views instances name to find your views
$.each( instances , function getInstance( index, element){
if(element.settings.view_name == viewName ){
yourViews = '.view-dom-id-' + element.settings.view_dom_id;
}
});
// Define your button click here...
$('.yourButtonClass').click( function(){
if(typeof yourViews !== 'undefined'){
$(yourViews).trigger('RefreshView');
}
});
}
}
Создайте открытый фильтр. Просмотрите html-код с помощью firebug или аналогичного расширения, затем скопируйте html-код для формы, которая отправляет открытый фильтр. Удалите все параметры выбора, чтобы у вас осталась только кнопка "Отправить", и переименуйте ее во что-то вроде "Обновить представление". Возьмите этот html-код и поместите его в заголовок (убедитесь, что установлен режим полного html). Вуаля, Обновите форму по запросу.