Thanh cuộn vô hạn (Infinite Scrolling) đề cập đến khả năng tiếp tục tải các bài viết mới trên trang web,blog mà không phải phải bấm vào các nút phân trang trên blog của bạn. Nó sẽ tự động tải thêm các bài viết mới khi bạn kéo thanh cuộn xuống phía dưới chân blog, website của bạn. Phân trang vô hạn này được sử dụng nhiều trong các trang web lớn như Google +, Facebook, Twitter và được đánh giá khá cao ở đó.
Lợi ích lớn nhất của thủ thuật này là không cần bấm chuột để tải thêm bài viết do vậy sẽ giúp độc giả tiếp xúc một cách tự động với các nội dung trên trang của bạn và đồng thời cũng giúp việc duyệt web nhanh hơn.
Bài viết này Namkna sẽ hướng dẫn ccs bạn làm thế nào để tích hợp tiện phân trang tự động tải bài viết cho Blogger của bạn bằng cách sử dụng Ajax Infinite Scroll jQuery plugin.
Lợi ích lớn nhất của thủ thuật này là không cần bấm chuột để tải thêm bài viết do vậy sẽ giúp độc giả tiếp xúc một cách tự động với các nội dung trên trang của bạn và đồng thời cũng giúp việc duyệt web nhanh hơn.
Bài viết này Namkna sẽ hướng dẫn ccs bạn làm thế nào để tích hợp tiện phân trang tự động tải bài viết cho Blogger của bạn bằng cách sử dụng Ajax Infinite Scroll jQuery plugin.
VIEW DEMO
Các bạn có thể xem video Demo ở bên dưới để hiểu rõ tính chất và cách thức hoạt động của tiện ích này nha:
» Tính năng
1. Tải nhanh hơn
2. Hiển thị nội dung tăng lên nhiều lần so với dạng truyền thống,
3. Trực quan hơn với độc giả xem bằng các thiết bị cảm ứng.
4. Thích hợp nhất cho blog sử dụng nhiều hình ảnh nặng
5. Danh mục chính được đơn giản hóa
6. Cam kết sử dụng cao hơn
» Thêm Infinite Scrolling với JQuery vào blog.
1. Đăng nhập vào blog.
2. Vào bố cục.
3. Chọn Thêm tiện ích => Tạo một tiện ích HTML/Javarscipts và chọn một trong 2 code bên dưới dán vào:
¤ Style 1: Hiển thị trên trang chủ, trang nhãn, trang lưu trữ và cả trang bài viết (các bài trước nó sẽ được nạp đầy đủ);
<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js'></script><script type='text/javascript'> //<![CDATA[ (function($){'use strict';Date.now=Date.now||function(){return+new Date()};$.ias=function(g){var h=$.extend({},$.ias.defaults,g);var i=new $.ias.util();var j=new $.ias.paging(h.scrollContainer);var k=(h.history?new $.ias.history():false);var l=this;function init(){var d;j.onChangePage(function(a,b,c){if(k){k.setPage(a,c)}h.onPageChange.call(this,a,c,b)});reset();if(k&&k.havePage()){stop_scroll();d=k.getPage();i.forceScrollTop(function(){var a;if(d>1){paginateToPage(d);a=get_scroll_threshold(true);$('html, body').scrollTop(a)}else{reset()}})}return l}init();function reset(){hide_pagination();h.scrollContainer.scroll(scroll_handler)}function scroll_handler(){var a,scrThreshold;a=i.getCurrentScrollOffset(h.scrollContainer);scrThreshold=get_scroll_threshold();if(a>=scrThreshold){if(get_current_page()>=h.triggerPageThreshold){stop_scroll();show_trigger(function(){paginate(a)})}else{paginate(a)}}}function stop_scroll(){h.scrollContainer.unbind('scroll',scroll_handler)}function hide_pagination(){$(h.pagination).hide()}function get_scroll_threshold(a){var b,threshold;b=$(h.container).find(h.item).last();if(b.size()===0){return 0}threshold=b.offset().top+b.height();if(!a){threshold+=h.thresholdMargin}return threshold}function paginate(d,e){var f;f=$(h.next).attr('href');if(!f){if(h.noneleft){$(h.container).find(h.item).last().after(h.noneleft)}return stop_scroll()}if(h.beforePageChange&&$.isFunction(h.beforePageChange)){if(h.beforePageChange(d,f)===false){return}}j.pushPages(d,f);stop_scroll();show_loader();loadItems(f,function(a,b){var c=h.onLoadItems.call(this,b),curLastItem;if(c!==false){$(b).hide();curLastItem=$(h.container).find(h.item).last();curLastItem.after(b);$(b).fadeIn()}f=$(h.next,a).attr('href');$(h.pagination).replaceWith($(h.pagination,a));remove_loader();hide_pagination();if(f){reset()}else{stop_scroll()}h.onRenderComplete.call(this,b);if(e){e.call(this)}})}function loadItems(b,c,d){var e=[],container,startTime=Date.now(),diffTime,self;d=d||h.loaderDelay;$.get(b,null,function(a){container=$(h.container,a).eq(0);if(0===container.length){container=$(a).filter(h.container).eq(0)}if(container){container.find(h.item).each(function(){e.push(this)})}if(c){self=this;diffTime=Date.now()-startTime;if(diffTime<d){setTimeout(function(){c.call(self,a,e)},d-diffTime)}else{c.call(self,a,e)}}},'html')}function paginateToPage(a){var b=get_scroll_threshold(true);if(b>0){paginate(b,function(){stop_scroll();if((j.getCurPageNum(b)+1)<a){paginateToPage(a);$('html,body').animate({'scrollTop':b},400,'swing')}else{$('html,body').animate({'scrollTop':b},1000,'swing');reset()}})}}function get_current_page(){var a=i.getCurrentScrollOffset(h.scrollContainer);return j.getCurPageNum(a)}function get_loader(){var a=$('.ias_loader');if(a.size()===0){a=$('<div class="ias_loader">'+h.loader+'</div>');a.hide()}return a}function show_loader(){var a=get_loader(),el;if(h.customLoaderProc!==false){h.customLoaderProc(a)}else{el=$(h.container).find(h.item).last();el.after(a);a.fadeIn()}}function remove_loader(){var a=get_loader();a.remove()}function get_trigger(a){var b=$('.ias_trigger');if(b.size()===0){b=$('<div class="ias_trigger"><a href="#">'+h.trigger+'</a></div>');b.hide()}$('a',b).off('click').on('click',function(){remove_trigger();a.call();return false});return b}function show_trigger(a){var b=get_trigger(a),el;el=$(h.container).find(h.item).last();el.after(b);b.fadeIn()}function remove_trigger(){var a=get_trigger();a.remove()}};$.ias.defaults={container:'.blog-posts',scrollContainer:$(window),item:'.post-outer',pagination:'#blog-pager',next:'#blog-pager-older-link a',loader:'<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu2rzUl3w8Yr1J6Pt12tEAHjQvxwM-mRXmlYXaT03MK7mVYjXucaDa7rnAk-OoU21zAbYUUQ-bDd5IfgaTLIDuWHboy9WsPhK4bQkh8ZqNi7QDDWppqMBnBHnOQHXBZkKYpL78BMueeYCQ/s1600/loading-namkna-blogspot-com-scolling.gif"/>',loaderDelay:600,triggerPageThreshold:8,trigger:'Load more Posts',thresholdMargin:-500,history:true,onPageChange:function(){},beforePageChange:function(){},onLoadItems:function(){},onRenderComplete:function(){ FB.XFBML.parse(); gapi.plusone.go(); twttr.widgets.load(); _gaq.push(['_trackPageview']); },customLoaderProc:false};$.ias.util=function(){var c=false;var d=false;var e=this;function init(){$(window).load(function(){c=true})}init();this.forceScrollTop=function(a){$('html,body').scrollTop(0);if(!d){if(!c){setTimeout(function(){e.forceScrollTop(a)},1)}else{a.call();d=true}}};this.getCurrentScrollOffset=function(a){var b,wndHeight;if(a.get(0)===window){b=a.scrollTop()}else{b=a.offset().top}wndHeight=a.height();return b+wndHeight}};$.ias.paging=function(){var c=[[0,document.location.toString()]];var d=function(){};var e=1;var f=new $.ias.util();function init(){$(window).scroll(scroll_handler)}init();function scroll_handler(){var a,curPageNum,curPagebreak,scrOffset,urlPage;a=f.getCurrentScrollOffset($(window));curPageNum=getCurPageNum(a);curPagebreak=getCurPagebreak(a);if(e!==curPageNum){scrOffset=curPagebreak[0];urlPage=curPagebreak[1];d.call({},curPageNum,scrOffset,urlPage)}e=curPageNum}function getCurPageNum(a){for(var i=(c.length-1);i>0;i--){if(a>c[i][0]){return i+1}}return 1}this.getCurPageNum=function(a){a=a||f.getCurrentScrollOffset($(window));return getCurPageNum(a)};function getCurPagebreak(a){for(var i=(c.length-1);i>=0;i--){if(a>c[i][0]){return c[i]}}return null}this.onChangePage=function(a){d=a};this.pushPages=function(a,b){c.push([a,b])}};$.ias.history=function(){var e=false;var f=false;function init(){f=!!(window.history&&history.pushState&&history.replaceState);f=false}init();this.setPage=function(a,b){this.updateState({page:a},'',b)};this.havePage=function(){return(this.getState()!==false)};this.getPage=function(){var a;if(this.havePage()){a=this.getState();return a.page}return 1};this.getState=function(){var a,stateObj,pageNum;if(f){stateObj=history.state;if(stateObj&&stateObj.ias){return stateObj.ias}}else{a=(window.location.hash.substring(0,7)==='#/page/');if(a){pageNum=parseInt(window.location.hash.replace('#/page/',''),10);return{page:pageNum}}}return false};this.updateState=function(a,b,c){if(e){this.replaceState(a,b,c)}else{this.pushState(a,b,c)}};this.pushState=function(a,b,c){var d;if(f){history.pushState({ias:a},b,c)}else{d=(a.page>0?'#/page/'+a.page:'');window.location.hash=d}e=true};this.replaceState=function(a,b,c){if(f){history.replaceState({ias:a},b,c)}else{this.pushState(a,b,c)}}}})(jQuery); //]]> </script><script>jQuery.ias();</script> <a href="http://namkna.blogspot.com/" alt="Blogger Templates" >Blogger Templates and Widgets</a>
¤ Style 2: Chỉ Trang chủ, trang nhãn và lưu trữ trang (Nó sẽ không làm việc trong các trang viết ).
» Một số lời khuyên và mẹo nhỏ!
- Nút +1, Tweet và nút Like sẽ được nạp sau khi tất cả các yêu cầu AJAX tải xong, vì vậy nếu blog của bạn có các nút chia sẻ xã hội bên dưới mỗi bài viết thì không cần phải lo lắng về chúng không hiển thị.
- Khi bài viết mới được tải dưới một bài (Nếu bạn chọn style 1), thì Threaded trong bài viết vừa được nạp sẽ không làm việc
- Để thay thế hình ảnh tải, chỉ cần tìm kiếm ảnh có đuôi .Gif trong mã và thay thế thành URL hình ảnh khác
- Để thay đổi số lần tải trước khi người dùng được yêu cầu tải trang nhiều hơn, tìm kiếm triggerPageThreshold:8 và thay thế các số 8 ở phía trước, nếu như bạn thiết lập giá trị là 4 thì plugin sẽ tải các nội dung mới bốn lần trước khi nó yêu cầu bạn xem bạn muốn xem nội dung nhiều hơn hay không
- onRenderComplete:function() chức năng được sử dụng để nói với các plugin phải làm gì sau khi trang đã được nạp thành công, Ở đây namkna đã thêm một đoạn mã để nói với Google Analytics là một trang mới được tải để GA sẽ ghi nhận mọi yêu cầu AJAX như một trang mới thăm
- loaderDelay:600 là thời gian chờ đợi trước khi nội dung mới được tải thêm (đoan vị tính là phần nghìn giây).
- Để biết thông tin về tất cả các tùy chọn có sẵn trong plugin này hãy xem tại đây IAS Options
- Nếu bạn phải đối mặt với bất kỳ khó khăn trong việc thực hiện, hãy để lại yêu namkna sẽ giải thích các ý kiến
Nhận xét
Tiện ích này quá tuyệt vời chỉ cần kéo chuột là đi hết cả blog.
Trả lờiXóaCho mình hỏi ngoài lề tẹo
Mình up 1 tiện ích lên hot ko hiểu sao chỉ firefox đọc được(nó mới chạy) còn Chrome và IE nó ko chạy.Thực ra tiện ích này là cho nó vào 1 trang mới nhưng mình muốn nó toàn màn hình.Bạn tranh thủ sang nhà mình để ở My Blogspot trên menu xem thử hộ tý ^^
Mình viết thiếu chữ ^^
XóaSang nhà mình mình để ở....
Còn tùy đó là tiện ích gì nữa bạn ak. hãy xóa cookite của trình duyệt để xem nha.
Xóaanh nam ơi cho em cái phần mềm để ghi lại màn hình của anh với
Trả lờiXóaCủa bạn đây: http://namkna.blogspot.com/2011/07/fscapture-69-full-portable-phan-mem.html
XóaCái này chỉ có tác dụng kiểu hiển thị bài viết mặc định của Blogspot.
Trả lờiXóaĐúng thế :)
XóaĐó là AncMusic Edition - Plugin hỗ trợ nghe nhạc em có thể xem tại đây XEM
Trả lờiXóaOke để mình xem lại và viết tut cho nha.
Trả lờiXóaNhận xét này đã bị quản trị viên blog xóa.
Trả lờiXóaanh ơi em thử click vào xem bài rồi bình luận nhưng nó cũng cuộn trang nữa @@
Trả lờiXóaEm hãy dùng style 2 nha.
Xóasao e không dùng đc thanh cuộn vô hạn vậy. e đọc cái kia cũng k hiểu lắm . A Nam chỉ hộ e với tuthacking-security
Trả lờiXóaHãy áp dụng dể được supposst.
Xóasao mình làm ko có kết quả
Trả lờiXóaHiện tại chỉ có tác dụng với mẫu SIMPLE và các blog không có phân trang nha bạn.
XóaỞ blog mình tại nó không hoạt động vậy.
Trả lờiXóahttp://nutshopabc.blogspot.com/
Xin Nam edit giùm mình nhé ~
Template ở đây: http://www.soratemplates.com/2013/06/sight-responsive-blogger-template.html
Theo mình thấy số bài viết hiện tại của bạn quá ít. Bạn đăng thêm xem sau.
XóaLưu ý tiện ích này như author đã chud thích nó hoạt động tót nhất trên mẫu của blogger.
Style 2 đâu anh mà không thấy hiện code vậy anh ?
Trả lờiXóaMà dùng này load thêm nó không hiện ảnh Trang chủ up = blog mà
Style 2 em chỉ cần bấm vào biểu tượng add widget nó sẽ tự động cài vào máy của em nha.
Xóae muốn làm như thế này vào wapka.mobi thì làm như nào hả bác?? giúp e với thank!!
Trả lờiXóaLàm như hướng dẫn trong bài nha bạn.
Xóaanh ơi, anh biết cách chuyển 1 bài viết dài ý trên fb không hiện chữ xem thêm mà bài viết đó có dạng thanh cuộn không?? chỉ e với
Trả lờiXóa