Mam niestandardowy widok bloku. Wyświetlam 5 ostatnich tytułów węzłów. Jeśli ktoś kliknie więcej linku, chcę załadować kolejne 5 tytułów pod bieżącymi 5 tytułami węzłów. Brak odświeżania strony i brak pagera. czy to możliwe? Jak miałbym to zrobić?
Mam niestandardowy widok bloku. Wyświetlam 5 ostatnich tytułów węzłów. Jeśli ktoś kliknie więcej linku, chcę załadować kolejne 5 tytułów pod bieżącymi 5 tytułami węzłów. Brak odświeżania strony i brak pagera. czy to możliwe? Jak miałbym to zrobić?
Odpowiedzi:
Jest to jeden z tych problemów, które wiele osób w świecie drupali próbowało rozwiązać.
Niedawno przedstawiłem prezentację na temat dokładnie tego samego problemu i tego, jak to osiągnąć za pomocą drupala. Niestety, nigdy nie opublikowałem żadnej z moich slajdów, gdziekolwiek reszta świata może to zobaczyć.
Oto podział modułów:
I na koniec nowy projekt, do którego właśnie dodałem w świetle tego pytania. Powodem projektu jest moja potrzeba również widoków, które wspierają ładowanie więcej, z wyjątkiem problemów wymienionych powyżej, które są nie do zaakceptowania dla mojego projektu.
Mam nadzieję, że to odpowiada na twoje pytanie. To jest moja „obiektywna” ;-) opinia na temat wszystkich widoków ładujących więcej modułów.
Inną metodą wykorzystującą https://github.com/paulirish/infinite-scroll w Drupal jest Przekształcenie dowolnego pagera Drupal w autopager - nieskończony pager przewijania - załaduj więcej pager .
Krok 1
Pobierz plik jquery.infinitescroll.min.js ze strony https://github.com/paulirish/infinite-scroll i umieść go w /sites/all/themes/YOURTHEME/js/jquery.infinitescroll.min.js.
Krok 2
Dodaj plik JavaScript do pliku .info swojego motywu.
Krok 3
Utwórz niestandardowy plik JavaScript /sites/all/themes/YOURTHEME/js/YOURTHEME.js zawierający następujący kod.
/** * 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' } }) }) }); }
Krok 4
Dodaj CSS nieskończonego programu ładującego przewijanie
#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; }
Krok 5
Upewnij się, że wersja jquery jest nowsza niż 1.7.1. Użyj jednej z metod opisanych w http://drupal.org/node/1058168 do zainstalowania nowszej wersji jQuery w Drupal.
Nie mogę dodać komentarza do pierwszej odpowiedzi. Ale powinieneś dodać nowy moduł: https://www.drupal.org/project/gd_infinite_scroll Moduł ten pozwala przekształcić dowolną zawartość i pager w nieskończone przewijanie lub załadować więcej pagerów.
Ze strony modułu:
Podaj administrację, aby korzystać z nieskończonej wtyczki przewijania jQuery: auto-pager na niestandardowych stronach za pomocą pager. Możesz użyć funkcji automatycznego ładowania przy przewijaniu lub przycisku ładowania więcej.