Вы здесь

Drupal Как работает Drupal "Views Auto-Refresh"

Views большой и очень полезный модуль и, как вы, наверное, знаете один из самых скачиваемых модулей в истории модулей Drupal. Если честно я слабо представляю разработку сайта без использование модуля Views. Возможности, которые Views предоставляет вам практически безграничны, но есть одно ограничение. Генерируется результат по умолчанию статическим. Что делать, если вы хотите иметь динамический поток деятельности, как напимер в Twitter или Facebook?

Ответит на этот вопрос: Существует модуль для этого! Модуль в вопросе "Views Hacks" и он содержит еще один модуль под названием "Views Auto-Refresh".

В этом уроке мы будем использовать "dev"-версию "Views Hacks", потому что альфа имеет очень много багом сейчас.

Подготовка

Как работает Drupal

Давайте начнем с реализации. Я предполагаю, что вы загрузили, установили и активировали, Views, Views UI, Views Hacks и Views Auto-Refresh. Далее я предполагаю, что вы создали представления, для которого вы хотите использовать автоматическое обновление.

Я продемонстрирую реализации Views Auto-Refresh, показывая скриншоты реального проекта.

Реализация

Views Auto-Refresh

Сделайте следующие в конфигурациях:

  • Прежде всего, необходимо дублировать view как view page. Дайте ему имя "autorefresh".
  • Дайте странице уникальный путь, как показано на скриншоте выше.
  • Также дайте легко запоминающееся машинное имя.
  • Убедитесь в том, что вид использует AJAX.
  • Добавте содержание: Дата добавления или любые другие метки как контекстуальные фильтра (я использовал "Содержимое: Дата обновления»).  Views Auto-Refresh  обеспечит необходимые метки.

Теперь зайдите на шапку вашего view и добавте"Global: Текстовая область» с текстом формат "PHP код" и добавте следующий код:

  1. <?php
  2. print theme('views_autorefresh', array('interval' =&gt; '30000', 'incremental'=&gt; array(
  3. 'view_base_path' =&gt; 'frontpage/autorefresh',
  4. 'view_display_id' =&gt; 'autorefresh',
  5. 'view_name' =&gt; 'articles',
  6. 'sourceSelector' =&gt; '.view-content',
  7. 'targetSelector' =&gt; '.view-content',
  8. 'firstClass' =&gt; 'views-row-first',
  9. 'lastClass' =&gt; 'views-row-last',
  10. 'oddClass' =&gt; 'views-row-odd',
  11. 'evenClass' =&gt; 'views-row-even',
  12. )));
  13. ?>

Views autorefresh

Как вы можете видеть, есть базовый путь (base path) и идентификатор отображения (display ID). Базовый путь равен вашей пути вашей страницы, а идентификатор отображения равен машинному имени auto-refresh View.
«interval» определяет, как часто вызывать автообновление View, когда "view_name" является активным машинным имям.

Дополнительные настройки селекторов и классов, которые будут рассмотрены на JavaScript Views Auto-Refresh.

Теперь вы можете подумать, что все сделано. Но нет, подождите, мы должны добавить и тот же код в заголовок вашей первоначальному виду. Так сделайте то же самое там, как я описал его выше. Пожалуйста, убедитесь, что этот view также использует AJAX, иначе он не будет работать.

Дальнейшие возможности

В своем проекте я использовал библиотеку JQuery Isotope, которая сортирует все сообщения динамически на загрузке или изменение размера. Но вы должны вызвать повторно вывод страницы, если Views Auto-Refresh поставил некоторые новые сообщения. Это действительно простой и легкий способ. Вы просто должны добавить Drupal behavior в Ваш JavaScript следующим образом:

  1. /**
  2. * Add functionality to trigger reloadItems after an autorefresh
  3. */
  4. Drupal.behaviors.triggerIsotopeAfterAutorefresh = {
  5. attach: function(context, settings){
  6. $('.view-id-articles').bind('autorefresh.incremental', function() {
  7. //getting the content/context
  8. $isotope = $('.view-id-articles .view-content');
  9. //reload all items by original order
  10. $isotope.isotope( 'reloadItems' ).isotope({ sortBy: 'original-order' });
  11. });
  12. }
  13. }

Как вы можете видеть, вы можете просто связать "autorefresh.incremental "события, чтобы выполнить свой ​​код. "autorefresh.incremental" срабатывает каждый раз, когда Views Auto-Refresh модуль загружает назначенное представление.

Заключение

После нескольких проб и ошибок попыток я, наконец, понял, как Views Auto-Refresh работает и надеюсь это статья поможет и Вам понять. Наслаждайтесь чудесным модулем Views Auto-Refresh.

Чуть не забыл, недавно Views Auto Refresh модуль получил свою отдельную странцу и она доступна по адресу http://drupal.org/project/views_autorefresh

Похожие материалы

Комментарии

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите код с картинки