Завантажте більше вмісту за допомогою ajax, натиснувши більше посилання у представленні


15

У мене є спеціальний перегляд блоку. Я показую останні 5 назв вузлів. Якщо хтось натискає більше посилання, я хочу завантажити наступні 5 назв під поточними 5 заголовками. Немає оновлення сторінки та не пейджер. Чи можливо це? Як би я пішов робити це?


У мене немає рішення, але ось кілька посилань, які можуть допомогти. Drupal Datasource та Drupal & Ajax , динамічно оновлюють дисплей Drupal . який видає представлення як JSON. Цей підручник Lullabot показує, як використовувати jQuery в Drupal. Ви можете подивитися код завантаження, наприклад, як його здійснити, якщо ви не хочете купувати відео.
Адам S

Нескінченна прокрутка переглядів для Drupal 8 не потребує жодної зовнішньої бібліотеки, запитує лише потрібний їй вміст, підтримує відкриті фільтри і може працювати автоматично або з натисканням кнопки.
Sam152,

Відповіді:


26

Тож це одна з тих проблем, яку намагалися вирішити кілька людей у ​​друпальському світі.

Нещодавно я виступив з доповіддю з цього самого питання і як це досягти за допомогою drupal. На жаль, я ніколи не публікував жодного з моїх слайдів, де б не бачив решту світу.

Ось розбивка модулів:

Перегляди Нескінченна прокрутка

  • Не працює з підтримкою Views Ajax - він хакує навколо себе, щоб зробити власний запит ajax
  • Робить запит на повну сторінку - це тому, що він не використовує запит Views Ajax
  • Потрібні перегляди 3.x - це плюс, тому що пейджер може підключатись до 3.x

Перегляди Нескінченний пейджер

  • Перегляди підтримки 2.x - Це дійсно не дуже добре, оскільки пейджер не може підключитися
  • Оскільки він працює з 2.x, він дійсно хакує навколо теми пейджера, регулярного перегляду ajax та поведінки попередньої обробки. Так це порушує деяку функціональність.

І останнє, але не менш важливе, це новий проект, до якого я щойно додав у світлі цього питання. Причиною проекту є моя потреба також потребувати переглядів, які підтримують більше завантаження, за винятком вищезазначених питань, які ми не приймаємо для мого проекту.

Перегляди завантажують Більше

  • Потрібен перегляд 3.x - це спеціально.
  • Підтримка переглядає звичайні параметри пейджера, такі як зсуви, кількість сторінок
  • Цілком підтримує функцію перегляду ajax
    • Якщо Ajax увімкнено для перегляду, додаткове завантаження додасть вміст у нижній частині списку
    • Якщо ajax відключений, сторінка буде оновлена ​​та замінить старий вміст новим
    • Він не робить запит на повну сторінку під час зворотного виклику ajax, він дозволяє переглядам робити це природний зворотний дзвінок і замість того, щоб замінювати вміст, який він додає до нього.
  • Якщо ви використовуєте модуль точкової точки, подання може бути налаштовано для автоматичного отримання нового вмісту, коли користувач прокручує внизу сторінки.
  • Підтримує ефекти JQuery (зараз підтримується лише ефект зникнення, швидше).

Сподіваюся, що це відповість на ваше запитання. Це моя "неупереджена" ;-) думка щодо всіх поглядів завантажує більше модуля.


Пішов з Views Infinite Pager, коли ми переглядаємо погляди 2. Спробуймо, щоб наш проект перейшов до переглядів 3.
Люсі

Я вніс кілька змін у відповідь, щоб відобразити нові функції, додані до views_load_more, а також видалити всі посилання на проект пісочниці, оскільки це тепер повністю підтримуваний проект на
drupal.org

Залишив коментар про: VIS у D8 на тему запитання ^
Sam152,

2

Інший метод за допомогою https://github.com/paulirish/infinite-scroll в Drupal - це перетворити будь-який пейджер Drupal в автопайгер - нескінченний пейджер прокрутки - завантажувати більше пейджера .

Крок 1

Завантажте jquery.infinitescroll.min.js з https://github.com/paulirish/infinite-scroll та покладіть його в /sites/all/themes/YOURTHEME/js/jquery.infinitescroll.min.js.

Крок 2

Додайте файл JavaScript у файл .info вашої теми.

Крок 3

Створіть власний файл JavaScript /sites/all/themes/YOURTHEME/js/YOURTHEME.js, що містить наступний код.

/**
 * Implementation of autopager @see https://github.com/paulirish/infinite-scroll
 * All views that have the "autopager" class will have an autopager
 */
Drupal.behaviors.viewsInfiniteScroll = function(context) {
  $(function(){
    var $container = $('div.autopager div.view-content');    
    $container.imagesLoaded( function(){
      $container.infinitescroll({
        navSelector  : 'div.autopager .pager',    // selector for the paged navigation
        nextSelector : 'div.autopager .pager-next a',  // selector for the NEXT link (to page 2)
        itemSelector : 'div.autopager .views-row',     // selector for all items you'll retrieve
        loading: {
          finishedMsg: 'No more pages to load.',
          img: '/sites/all/themes/YOURTHEME/images/loading.gif'
        }
      })
    })
  });
}

Крок 4

Додайте CSS нескінченного завантажувача прокрутки

#infscr-loading {
  position: fixed;
  text-align: center;
  bottom: 300px;
  left: 42%;
  z-index: 100;
  background: white;
  background: hsla( 0, 0%, 100%, 0.9 );
  padding: 20px;
  color: #222;
  font-size: 15px;
  font-weight: bold;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  border-radius: 10px;
}

Крок 5

Переконайтеся, що версія jquery новітня, ніж 1.7.1. Використовуйте один із методів, описаних у http://drupal.org/node/1058168 для встановлення нової версії jQuery в Drupal.


1

Я не можу додати коментар до першої відповіді. Але слід додати новий модуль: https://www.drupal.org/project/gd_infinite_scroll Цей модуль дозволить перетворити будь-який вміст і пейджер у нескінченну прокрутку або завантажити більше пейджера.

Зі сторінки модуля:

Надайте адміністрацію для використання нескінченного плагіну jQuery для прокрутки: автоматичний пейджер на користувацьких сторінках за допомогою пейджера. Ви можете використовувати автозавантаження під час прокрутки або кнопку додаткового завантаження.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.