Bir görünümde daha fazla bağlantıyı tıklarken ajax ile daha fazla içerik yükleyin


15

Özel bir blok görünümüm var. Son 5 düğüm başlığını görüntülüyorum. Birisi daha fazla bağlantıyı tıklatırsa, sonraki 5 başlığı geçerli 5 düğüm başlığının altına yüklemek istiyorum. Sayfa yenileme yok ve çağrı cihazı değil. Mümkün mü? Bunu nasıl yapabilirim?


Bir çözümüm yok ama işinize yarayabilecek birkaç bağlantı var. Drupal Datasource ve Drupal & Ajax , drupal ekranı dinamik olarak günceller. görünümleri JSON olarak çıktılar. Bu Lullabot öğretici , Drupal'da jQuery'nin nasıl kullanılacağını gösterir. Videoyu satın almak istemiyorsanız indirme koduna, örneğin nasıl uygulanacağına bakabilirsiniz.
Adam S

Drupal 8 için sonsuz kaydırma görünümleri herhangi bir harici kütüphaneye ihtiyaç duymaz, sadece ihtiyacı olan içeriği ister, açık filtreler için destek sağlar ve otomatik olarak veya bir düğmeye basarak çalışabilir.
Sam152

Yanıtlar:


26

Drupal dünyasında birden çok insanın çözmeye çalıştığı sorunlardan biri budur.

Geçenlerde aynı konuda ve drupal ile nasıl başaracağına dair bir sunum yaptım. Ne yazık ki, dünyanın geri kalanının görebileceği hiçbir yerde slaytlarımı hiç yayınlamadım.

Modüllerin Dağılımı:

Görünümler Sonsuz Kaydırma

  • Views Ajax desteği ile çalışmaz - Kendi ajax isteği yapmak için etrafında kesmek
  • Tam sayfa isteği yapar - Bunun nedeni Views Ajax isteğini kullanmamasıdır
  • Görüntüleme 3.x gerektirir - Çağrı cihazı 3.x'te takılabilir olduğundan bu bir artıdır

Sonsuz Çağrı Görüntüleme

  • Destek Görünümleri 2.x - Bu gerçekten iyi bir şey değil, çünkü çağrı cihazı takılabilir değil
  • 2.x ile çalıştığından, çağrı cihazı teması, normal görünümler ajax ve önişleme davranışı etrafında gerçekten hacklenir. Yani bazı işlevleri bozar.

Son olarak, bu sorunun ışığında yeni eklediğim yeni bir proje. Projenin nedeni, yukarıda belirtilen hususlar dışında yükü daha fazla destekleyen görüşlere ihtiyaç duymamdır. Projem için kabul edilemez.

Views load Daha fazlası

  • Görüntüleme gerektirir 3.x - Bu bilerek yapılmıştır.
  • Destek, ofsetler, sayfa sayısı gibi normal çağrı seçeneklerini görüntüler
  • Tam görünümlerini destekler ajax özelliği
    • Görünümde Ajax etkinse, daha fazla yükleme listenin altına içerik ekler
    • Ajax devre dışı bırakılırsa sayfa yenilenir ve eski içeriği yeni içerikle değiştirir
    • Ajax geri arama yaparken tam sayfa isteği yapmaz, görünümlerin doğal geri arama yapmasına izin verir ve ona eklediği içeriği değiştirmek yerine.
  • Ara nokta modülünü kullanıyorsanız, kullanıcı sayfanın altına geldiğinde görünüm otomatik olarak yeni içerik alacak şekilde yapılandırılabilir.
  • JQuery efektlerini destekler (şu anda sadece solma etkisi desteklenmektedir, daha yakında).

Umarım bu soruya cevap verir. Bu tüm görüşler daha fazla modül yük benim "tarafsız" ;-) görüş.


Görüşlerle Gittim Sonsuz Çağrı 2'de göründüğümüz gibi 2. Projemizi 3'e kadar hareket ettirmeye çalışacağız.
Lucy

Views_load_more'a eklenen yeni özellikleri yansıtmak ve ayrıca sanal alan projesine yapılan tüm referansları kaldırmak için yanıtta bazı değişiklikler yaptım, çünkü bu artık drupal.org'da tam olarak desteklenen bir proje
ericduran

Bir yorum
bırak

2

Drupal'da https://github.com/paulirish/infinite-scroll kullanan başka bir yöntem de , herhangi bir Drupal çağrı cihazını otomatik yönetici - sonsuz kaydırma çağrı cihazına dönüştürmek - daha fazla çağrı cihazı .

Aşama 1

Https://github.com/paulirish/infinite-scroll adresinden jquery.infinitescroll.min.js dosyasını indirin ve /sites/all/themes/YOURTHEME/js/jquery.infinitescroll.min.js içine koyun.

Adım 2

JavaScript dosyasını temanızın .info dosyasına ekleyin.

Aşama 3

Aşağıdaki kodu içeren özel bir JavaScript dosyası /sites/all/themes/YOURTHEME/js/YOURTHEME.js oluşturun.

/**
 * 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. Adım

Sonsuz kaydırma yükleyicinin CSS'sini ekleyin

#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;
}

Adım 5

Jquery sürümünün 1.7.1'den daha yeni olduğundan emin olun. Drupal'a jQuery'nin daha yeni bir sürümünü yüklemek için http://drupal.org/node/1058168'de açıklanan yöntemlerden birini kullanın .


1

İlk cevaba yorum ekleyemiyorum. Ancak yeni modülü eklemelisiniz: https://www.drupal.org/project/gd_infinite_scroll Bu modül, herhangi bir içeriği ve çağrı cihazını sonsuz bir kaydırmaya veya daha fazla çağrı cihazına dönüştürmenize izin verir.

Modül sayfasından:

Sınırlayıcı kaydırma jQuery eklentisini kullanmak için bir yönetim sağlayın: çağrı cihazı kullanarak özel sayfalarda otomatik çağrı cihazı. Kaydırma sırasında otomatik yükleme veya daha fazla yükleme düğmesi kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.