Menerapkan Fitur Infinite Scroll Sederhana pada Blogger
Tabel Konten
Fitur ini merupakan contoh nyata penerapan dari potongan kode ini yang kemudian diaplikasikan untuk membuat navigasi halaman AJAX tanpa jQuery seperti pada contoh sebelumnya.
Infinite scroll adalah teknik desain web yang mencegah bar gulir peramban menggulir ke bagian bawah halaman, membuat halaman tumbuh dengan konten tambahan sebagai gantinya.
Plugin ini mengharuskan Anda untuk menentukan empat elemen sebagai target JavaScript. Posting, wadah posting, wadah navigasi halaman dan tautan navigasi halaman berikutnya. Untuk Blogger, elemen target yang paling umum dapat digunakan adalah sebagai berikut:
.blog-posts
.date-outer
.blog-pager
.blog-pager-older-link
Anda dapat menyesuaikannya nanti berdasarkan markup HTML pada templat Anda.
Plugin ini pada awalnya merupakan plugin untuk CMS Mecha, tapi sebenarnya ini tetap dapat bekerja pada platform yang lain seperti Blogger, dengan sedikit penyesuaian tentunya.
Untuk menerapkannya pada Blogger, salin kode di bawah ini kemudian letakkan di atas </body>
:
<b:if cond='data:blog.pageType in ["index","archive"]'>
<script src='//cdn.rawgit.com/tovic/infinite-scroll-plugin-for-mecha-cms/v1.1.0/infinite-scroll/assets/sword/infinite-scroll.min.js'></script>
<script>
//<![CDATA[
/*! Simple AJAX infinite scroll by Taufik Nurrohman */
var infinite_scroll = new InfiniteScroll({
type: 2,
target: {
posts: '.blog-posts',
post: '.date-outer',
anchors: '.blog-pager',
anchor: '.blog-pager-older-link'
},
text: {
load: '<a class="js-load" href="javascript:;">Muat Lagi</a>',
loading: '<span class="js-loading" style="cursor:wait;">Memuat\u2026</span>',
loaded: '<span class="js-loaded">Dimuat.</span>',
error: '<a class="js-error" href="javascript:;">Kesalahan.</a>'
}
});
//]]>
</script>
</b:if>
Simpan perubahan.
Konfigurasi
Data | Keterangan |
---|---|
type | Opsi 0 berarti pengguna perlu mengeklik tombol Muat Lagi untuk memuat posting-posting sebelumnya. Opsi 1 berarti pengguna hanya perlu menggulung peramban sampai pada batas akhir halaman untuk memuat posting-posting sebelumnya. Opsi 2 berarti pengguna perlu mengeklik tombol Muat Lagi untuk memuat posting-posting sebelumnya, setelah itu pengguna hanya perlu menggulung peramban sampai pada batas akhir halaman untuk memuat posting-posting sebelumnya. |
68 Komentar
Kang Rian リアンさん
matur nuhun.. :'D
Kia Meliala
:)
BKE
Keren lah :-bd
Bisa buat memfungsikan widget lain nih
Iwan Efendi
Bagus mas, sudah saya terapkan untuk tampilan mobile mas.
Mas tovic, bisa bantu gak untuk tampilan mobile saya di blog, itu imagenya pecah gitu mas.
Dia misalnya menggunakan gambar berikut :
Yang dtampilkan malah gambar berikut mas, dengan hasil yang terbilang kecil :
Blog saya : IwanBerbagi
Mohon bantuannya mas, terima kasih. :)
Taufik Nurrohman
Itu sudah sengaja dilakukan oleh Blogger untuk optimasi halaman yang diakses menggunakan perangkat seluler.
Iwan Efendi
Gak bisa kita lakukan perubahan untuk membuatnya tidak terlalu di compress gitu mas..?
Taufik Nurrohman
Tampilan seluler dinonaktifkan saja mas, lalu buat versi tampilan seluler sendiri dengan memanfaatkan kondisional
data:blog.isMobileRequest
→ /2013/01/bekerja-dengan-blog-seluler.htmlImron Fhatoni
matur nuhun :D
ApkDlMod.com
gan kok saya coba terapkan tumbnails post nggk ikut reload ya ? yg ada malah blank tumbnail postingan ndk ikut ke refresh mohon pencerahannya suhu :'(
Taufik Nurrohman
Kalau thumbnail termuat dengan JavaScript efeknya bakal begitu. Harus diproses ulang perintah JavaScript untuk memuat thumbnail setiap kali posting baru dimuat. Bisa pakai hook seperti ini:
Referensi: README.md
Alternatif: /2016/06/mengubah-ukuran-thumbnail-tanpa.html
Unknown
Berarti ini bisa difungsikan buat plugin isotope juga kang?
Taufik Nurrohman
Iya bisa.
Ainun Jariah
Mas di blog saya kok gak aktif ya...??
Unknown
Kok gak work ya?
Fariz
Kalau ditambah Masonry gimana ?
jurnalkata.com
Kok ngg bisa mas... duhhhh berantakan malah
Cuman Android
Terima kasih gan, mantap banget dah :"D
Sekedus
Keren banget gan.. cocok nih buat (contohnya) blog Berita.
Igniel
Wah saya baru tau ada Blogspot sekeren ini. Duh telat banget yak.
Templatenya kereeenn bangettttt. Ringan pula.
Maaf komennya nggak relevan. Nggak tahan pengen bilang keren soalnya :)
Taufik Nurrohman
=D
Bungfrangki
Keren bang :-bd
tapi setelah diterapkan, ada sedikit yang kurang,
URL di browser gak berubah setelah artikel berpindah ke artikel dibawahnya (saat kena scroll).
mudah-mudahan kedepan ada solusinya
Taufik Nurrohman
Sebenarnya Saya ada rencana untuk menambahkan API Riwayat supaya URL di address bar bisa berubah, tapi masih dalam tahap belajar sedikit-sedikit. Padahal ini fitur sudah lama sekali populer setelah munculnya event
hashchange
, Saya-nya saja yang malas :pSekedus
klo saya menggunakan
history.pushState()
, untuk penjelasan bisa cek di sini (indonesia)Unknown
Suwun bro. Lanjutkan :D
Giri Diwa Adam
Gan INFINITE SCROLL Di atas Mirip Dengan Punya Instagram Bukan ?? Makasih
Libra Yanada Sembiring
http://kerensive.blogspot.com/search/label/Health?&max-results=7
Kalau sudah batas akhir kenapa nggak mau nampil 'ALL POST SHOW'?
Taufik Nurrohman
Jumlah posting per halaman diset ke
7
, tapi jumlah semua posting hanya ada5
. Mungkin bisa diperbaiki kapan-kapan supaya tombol memuat tidak ditampilkan jika jumlah semua posting kurang dari batas maksimal.DRCreative
kok sewaktu meload satu post terakhir gk bisa ya gan?
DRCreative
ehh udah bisa deh gan ternyata karena setting jumlah post :D
Igniel
Saya pilih opsi 0: pengguna perlu mengeklik tombol Muat Lagi untuk memuat posting-posting sebelumnya. Tapi postingan otomatis keluar dengan sendirinya ketika di-scroll sampai akhir batas halaman.
Postingan home saya set 6 buah, ketika di-scroll langsung muncul 12 buah. Tapi setelah itu kembali normal. Tombol "Muat Lagi" tetap muncul, dan setiap di-klik postingan muncul 6 buah. Jadi yang error hanya proses pertama saja.
DRCreative
permasalahan kita sama mba
Denny
Solusinya gan post baru diload yang nongol malah data.post.body bukan snippetnya
Taufik Nurrohman
Buat posting read-more tanpa JavaScript → /2012/04/posting-auto-read-more-tanpa-javascript.html
Unknown
punya saya saat discroll gambar tidak ikut diload jadi blank, masalahnya dimana yah mas?
Unknown
solved mas, ternyata kesalah ambil thumbnail dari js heeh
Ayas Yaza
izin pakai plugin ini mas, terimakasih
saya menggunakan sistem komentar facebook, perlu menambahkan kode ini untuk memanggil fb.comment pada posting yang baru muncul setelah proses load.
masalahnya FB.XFBML.parse bahkan mengurai kembali fb.comment dari awal halaman, dari posting paling atas sampai paling bawah halaman berulangkali setiap proses load. apa mas taufik punya solusi supaya setelah proses load halaman selanjutnya FB.XFBML.parse hanya mengeksekusi fb.comment pada posting yang baru muncul saja dan tidak mengurai kembali fb.comment lain yang sudah ada di setiap posting di halaman yang sudah termuat?
Taufik Nurrohman
Kalau dari halaman referensi menjelaskan bahwa parameter pertama bisa dipakai untuk memparse elemen yang spesifik:
Nanti di elemen HTML terkait perlu ditambahkan kelas
fb-comment-parse-once
.Ayas Yaza
terimaksih mas taufik, apa penerapannya begini?
HTML
SDK
saya terapkan seperti di atas, justru FB.XFBML.parse tidak mengeksekusi fb.comment di halaman selanjutnya. apa yang salah ya?
Taufik Nurrohman
Enggak. Maksud Saya di markup komentar cukup ditambahkan kelas baru seperti ini:
Lalu pada kait diterapkan seperti ini:
Untuk kode SDK tidak perlu dilakukan perubahan apa-apa.
Ayas Yaza
sudah dirubah seperti intruksi mas taufik, tapi tetep ga bias mas.
Taufik Nurrohman
Untuk fitur pemuatan API berdasarkan event menggulung mungkin lebih baik diganti pakai kait
(?:add|remove)EventListener
saja supaya tidak merusak sistem penggulung di plugin Saya ini pada bagianwindow.onscroll = null
:Ayas Yaza
oke mas taufik, terimakasih atas bantuannya
Rauhun Isnaini
Mohon maaf pak, saya lagi bingung karena habis belajar edit template evo magz pro setelah selesai perubahan, tiba-tiba komentarnya jadi muncul angka di samping photo avatar dan ada tulisan load more...dibawah kotak komentar. sudah nyari tapi gak nemu-nemu juga. kalau berkenan mohon bantuannya.
terimakasih dan mohon maaf kalau komentar saya tidak sesuai dengan topik pembahasan.
Taufik Nurrohman
Mungkin akan lebih baik jika ditanyakan ke si pembuat tema secara langsung.
Pulung
sama kaya yang di atas gan, saya pake disqus yang tampil on.clcik, saya ambil dari sini setelah memuat halaman selanjutnya, disqusnya ga tampil setelah di klik. tapi untuk halaman yang muncul pertama bias muncul. solusunya gimana ya? makasih sebelumnya gan
Taufik Nurrohman
Sama seperti kasus ini, cukup masukan fungsi ke dalam kait
load
:Putri Rahayu
sayakan pake caraousel, setiap kali dimuat, ada tambahan elemen
<span class="fi" id="fi:0"/>
.jadinya dia ikut ke caraousel...
cara ngilangin span itu gimana ya mas... atau memasukkannya kedalam blog-pager
saya udah tambahin gini tapi ga bisa juga
infinite_scroll.on("load", function() {
$(".fi").remove();
});
begini dia
Taufik Nurrohman
Abreviasi fi bagi Mecha sebenarnya memiliki arti fragment identifier. Itu Saya tambahkan agar ketika Saya mengaktifkan URL hash dengan
window.location.hash
sebagai#fi:0
,#fi:1
,#fi:2
, dan seterusnya, maka halaman akan secara otomatis meloncat ke titik muat tersebut.Di carousel punyamu kan pakai Flickity… nah, di plugin Flickity itu ada opsi untuk menentukan selektor item. Mungkin kamu bisa coba pakai itu. Misalnya seperti ini:
Putri Rahayu
wah ternyata ada opsi kayak gitu di flickity, saya gak liat, hehehe... makasih banyak ya mas taufik, mantep lah memang mamas ini
Loker Sumatera
kang, gimana cara mengakali load yang di slide ke samping? post hanya memuat saat di scroll ke bawah, gimana supaya bisa memuat saat slide ke samping?
Taufik Nurrohman
Bisa tapi terlalu rumit untuk plugin ini. Saya ingin fokus ke hal-hal yang ringan saja, seperti kata “sederhana” pada judul artikel ini. Website yang bisa di-slide ke samping sudah bukan masuk ke dalam kategori sederhana lagi.
Loker Sumatera
yahh, sangat disayangkan, untuk saat ini saya hanya bisa mengakalinya dengan menekan button untuk memuat halamannya
Lein
gimana cara buat script ini biar di load saat pengunjung men-scrool laman, kaya lazyload adsense gitu atau di muat setelah loading blog selesai. soal nya kalo pengunjung langsung scrool kebawah, langsung nge load 2 halaman.
Agar pas postingan home saya set 8 buah, ketika di-scroll langsung muncul 16 buah. Tapi setelah itu kembali normal. Tombol "Muat Lagi" tetap muncul, dan setiap di-klik postingan muncul 8 buah. Jadi yang error hanya proses pertama saja.
Taufik Nurrohman
Kalau skrip Saya dilepas dan kamu coba salin URL dari tautan “Halaman Berikutnya” di situ ada parameter
max-results=8
apa tidak? Kalau tidak ada mungkin bisa diatasi dengan cara menambahkan parameter tersebut.Terkait: /2012/03/membatasi-jumlah-posting-pada-halaman.html
Ayas Yaza
Mas Taufik, type infinite-scroll bisa dibuat conditional ga?
misalnya
makasih sebelumnya
Taufik Nurrohman
→ /2018/09/javascript-tag-kondisional-halaman-blogger.html
Yuli Akbar
kang, lazy load with interception observer gak bekerja saat button load more ditekan. gimana cara mengatasinya kang?
Taufik Nurrohman
Loker Sumatera
kang, tolong bantu kalau kodenya seperti ini gimana kang?
apakah on.('load',) nya sebagai pembungkus di lazyImages.forEach(function(lazyImage) {...
Taufik Nurrohman
Ganti
document.addEventListener("DOMContentLoaded",
jadiinfinite_scroll.on("load",
Loker Sumatera
work kang, cuma ada problem lagi kang. sebelum tombol load ditekan, lazyImage gak jalan di awal BelajarDesign
Taufik Nurrohman
Begini:
Loker Sumatera
error kang
Loker Sumatera
terima kasih kang, udah work. saya buat jadi seperti ini:
infinite_scroll.on('load', lazyLoad=function() {...});
lazyLoad();
terima kasih banyak kang, telah meluangkan waktunya;
Umar Qadafi
Salam. Jika ingin memanggil hook di bawah ini, kodenya ditaruh mana ya, Gan? Terima kasih.
Loker Sumatera
kang, ijin tanya. saya punya sebuah function infinite scroll seperti ini.
saya gabungin dengan observer image. saat di load, observer image dari hasil memuat infinite scroll dengan kode tersebut tidak bekerja. saya ingat kode yg saya dapat dari penjelasan infinite scroll kang taufiq.
//Kode ini
// Picu di muat berikutnya
infinite_scroll.on('load', function lazyLoad() { … });
// Picu di awal muat
lazyLoad();
cara membuat variable infinite_scroll dari sebuah function diatas gimana ya kang?
saat saya ubah function tersebut menjadi seperti variable infinite_scroll, error hasil yang saya dapat. mohon bantuannya kang. plisss
Ryan Jauhari
Wah terimakasih bang, sangat bermanfaat, work it banget. Salut saya skripnta tidak di enkripsi seperti punya si hijau 🙂
Taufik Nurrohman
Berikut ini cara menerapkan fitur infinite scroll pada beberapa bagian sekaligus.