Chính vì đây là thủ thuật hữu ích nên bạn có thể thấy chúng ở bất kỳ đầu, đa số các Blogger nổi tiếng của Blogspot đều sử dụng thủ thuật này, chẳng hạn:
bloggerbuster
Bloggertricks
Deluxetemplates
Blogger Pluggin
Nhưng nếu bạn để ý các comment trong các bài hướng dẫn thực hiện thì sẽ thấy rất nhiều ý kiến thắc mắc do không hiển thị được Danh mục trang. Nguyên nhân chính của lỗi này là do:
1. Tên miền trong đoạn đầu của script chỉ sử dụng cho blogger (.blogspot.com) và đã được giải thích chi tiết tại bài viết: Amanda give explanation about this.
2. Sẽ có một số mẫu Blogger không có tên id 'blog-pager.
Để giải quyết câc vẫn đề này, abu-farhan đã thay đổi các tập lệnh và hướng dẫn chi tiết thực hiện bản hoàn chỉnh (đã sửa lỗi) như sau:
Bước 1: Đăng nhập vào tài khoản Blogger >> Layout >> Edit HTML
Bước 2: Tìm tới đoạn tag ]]></b:skin> và thêm đoạn mã CSS sau:
vào trên tag ]]></b:skin>.showpageArea {padding: 0 2px;margin-bottom:10px;margin-top:10px; } .showpageArea a {border: 1px solid #505050; color: #000000;font-weight:normal; padding: 3px 6px !important; padding: 1px 4px ;margin:0px 4px; text-decoration: none; } .showpageArea a:hover { font-size:11px; border: 1px solid #333; color: #000000; background-color: #FFFFFF; } .showpageNum a {border: 1px solid #505050; color: #000000;font-weight:normal; padding: 3px 6px !important; padding: 1px 4px ;margin:0px 4px; text-decoration: none; } .showpageNum a:hover { font-size:11px; border: 1px solid #333; color: #000000; background-color: #FFFFFF; } .showpagePoint {font-size:11px; padding: 2px 4px 2px 4px; margin: 2px; font-weight: bold; border: 1px solid #333; color: #fff; background-color: #000000; } .showpage a:hover {font-size:11px; border: 1px solid #333; color: #000000; background-color: #FFFFFF; } .showpageNum a:link,.showpage a:link { font-size:11px; padding: 2px 4px 2px 4px; margin: 2px; text-decoration: none; border: 1px solid #0066cc; color: #0066cc; background-color: #FFFFFF;} .showpageNum a:hover {font-size:11px; border: 1px solid #333; color: #000000; background-color: #FFFFFF; }
Như hình dưới:
(Ảnh nguồn từ Mohamed RIAS)
Bước 3 : Bước tiếp theo bạn tìm code hay dòng lênh tương tự trong mẫu template ( Không cần click chọn Expand Widget Templates ) như dưới
<b:section class=’main’ id=’main’ showaddelement=’yes’>
<b:widget id=’Blog1′ locked=’true’ title=’Blog Posts’ type=’Blog’/>
</b:section>
Thêm đoạn code sau:
vào phía dưới tag </b:section> .
<script type='text/javascript'> var home_page_url = location.href; var pageCount=10; var displayPageNum=6; var upPageWord ='Previous'; var downPageWord ='Next'; function showpageCount(json) { var thisUrl = home_page_url; var htmlMap = new Array(); var thisNum = 1; var postNum=1; var itemCount = 0; var fFlag = 0; var eFlag = 0; var html= ''; var upPageHtml =''; var downPageHtml =''; htmlMap[htmlMap.length]='/'; postNum++; for(var i=pageCount-1, post; post = json.feed.entry[i]; i=i+pageCount) { var timestamp1 = post.published.$t.substring(0,19)+post.published.$t.substring(23,29); timestamp = encodeURIComponent(timestamp1); var title = post.title.$t; if(thisUrl.indexOf(timestamp)!=-1 ){ thisNum = postNum; } postNum++; htmlMap[htmlMap.length] = '/search?updated-max='+timestamp+'&max-results='+pageCount; } var banyaknomer = htmlMap.length; if (json.feed.entry.length % pageCount == 0){ var banyaknomer = htmlMap.length -1 ; postNum=postNum-1; }; for(var p =0;p< banyaknomer;p++){ if(p>=(thisNum-displayPageNum-1) && p<(thisNum+displayPageNum)){ if(fFlag ==0 && p == thisNum-2){ if(thisNum==2){ upPageHtml = '<span class="showpage"><a href="/">'+ upPageWord +'</a></span>'; }else{ upPageHtml = '<span class="showpage"><a href="'+htmlMap[p]+'">'+ upPageWord +'</a></span>'; } fFlag++; } if(p==(thisNum-1)){ html += '<span class="showpagePoint">'+thisNum+'</span>'; }else{ if(p==0){ html += '<span class="showpageNum"><a href="/">1</a></span>'; }else{ html += '<span class="showpageNum"><a href="'+htmlMap[p]+'">'+ (p+1) +'</a></span>'; } } if(eFlag ==0 && p == thisNum){ downPageHtml = '<span class="showpage"> <a href="'+htmlMap[p]+'">'+ downPageWord +'</a></span>'; eFlag++; } } } if(thisNum>1){ html = ''+upPageHtml+' '+html +' '; } html = '<div class="showpageArea"><span style="COLOR: #000;" class="showpageOf"> Pages ('+(postNum-1)+')</span>'+html; if(thisNum<(postNum-1)){ html += downPageHtml; } if(postNum==1) postNum++; html += '</div>'; var pageArea = document.getElementsByName("pageArea"); var blogPager = document.getElementById("blog-pager"); if(postNum <= 2){ html =''; } for(var p =0;p< pageArea.length;p++){ pageArea[p].innerHTML = html; } if(pageArea&&pageArea.length>0){ html =''; } if(blogPager){ blogPager.innerHTML = html; } } function showpageCount2(json) { var thisUrl = home_page_url; var htmlMap = new Array(); var isLablePage = thisUrl.indexOf("/search/label/")!=-1; var thisLable = isLablePage ? thisUrl.substr(thisUrl.indexOf("/search/label/")+14,thisUrl.length) : ""; thisLable = thisLable.indexOf("?")!=-1 ? thisLable.substr(0,thisLable.indexOf("?")) : thisLable; var thisNum = 1; var postNum=1; var itemCount = 0; var fFlag = 0; var eFlag = 0; var html= ''; var upPageHtml =''; var downPageHtml =''; var labelHtml = '<span class="showpageNum"><a href="/search/label/'+thisLable+'?&max-results='+pageCount+'">'; var thisUrl = home_page_url; htmlMap[htmlMap.length]=labelHtml; postNum++; for(var i=pageCount-1, post; post = json.feed.entry[i]; i=i+pageCount) { var timestamp1 = post.published.$t.substring(0,19)+post.published.$t.substring(23,29); timestamp = encodeURIComponent(timestamp1); var title = post.title.$t; if(thisUrl.indexOf(timestamp)!=-1 ){ thisNum = postNum; } if(title!='') postNum++; htmlMap[htmlMap.length] = '/search/label/'+thisLable+'?updated-max='+timestamp+'&max-results='+pageCount; itemCount++; } var banyaknomer = htmlMap.length; if (json.feed.entry.length % pageCount == 0){ var banyaknomer = htmlMap.length -1 ; postNum=postNum-1; }; for(var p =0;p< banyaknomer;p++){ if(p>=(thisNum-displayPageNum-1) && p<(thisNum+displayPageNum)){ if(fFlag ==0 && p == thisNum-2){ if(thisNum==2){ upPageHtml = labelHtml + upPageWord +'</a></span>'; }else{ upPageHtml = '<span class="showpage"><a href="'+htmlMap[p]+'">'+ upPageWord +'</a></span>'; } fFlag++; } if(p==(thisNum-1)){ html += '<span class="showpagePoint">'+thisNum+'</span>'; }else{ if(p==0){ html = labelHtml+'1</a></span>'; }else{ html += '<span class="showpageNum"><a href="'+htmlMap[p]+'">'+ (p+1) +'</a></span>'; } } if(eFlag ==0 && p == thisNum){ downPageHtml = '<span class="showpage"> <a href="'+htmlMap[p]+'">'+ downPageWord +'</a></span>'; eFlag++; } } } if(thisNum>1){ if(!isLablePage){ html = ''+upPageHtml+' '+html +' '; }else{ html = ''+upPageHtml+' '+html +' '; } } html = '<div class="showpageArea"><span style="COLOR: #000;" class="showpageOf"> Pages ('+(postNum-1)+')</span>'+html; if(thisNum<(postNum-1)){ html += downPageHtml; } if(postNum==1) postNum++; html += '</div>'; var pageArea = document.getElementsByName("pageArea"); var blogPager = document.getElementById("blog-pager"); if(postNum <= 2){ html =''; } for(var p =0;p< pageArea.length;p++){ pageArea[p].innerHTML = html; } if(pageArea&&pageArea.length>0){ html =''; } if(blogPager){ blogPager.innerHTML = html; } } </script> <script type='text/javascript'> var thisUrl = home_page_url; if (thisUrl.indexOf("/search/label/")!=-1){ if (thisUrl.indexOf("?updated-max")!=-1){ var lblname1 = thisUrl.substring(thisUrl.indexOf("/search/label/")+14,thisUrl.indexOf("?updated-max")); }else{ var lblname1 = thisUrl.substring(thisUrl.indexOf("/search/label/")+14,thisUrl.indexOf("?&max")); } } var home_page = "/"; if (thisUrl.indexOf("?q=")==-1 && thisUrl.indexOf(".html")==-1){ if (thisUrl.indexOf("/search/label/")==-1){ document.write('<script src="'+home_page+'feeds/posts/summary?alt=json-in-script&callback=showpageCount&max-results=99999" ><\/script>') }else{document.write('<script src="'+home_page+'feeds/posts/full/-/'+lblname1+'?alt=json-in-script&callback=showpageCount2&max-results=99999" ><\/script>') } } </script>
Mẹo: Nếu bạn không tìm thấy code cần tìm bạn có thể search (ctrl+f) cho key ” id=’main’ để tìm.
Hoắc nếu thực sự khó khăn bạn có thể dán chúng vào trước thẻ </body>
Trong đoạn code ở trên, bạn có thể sửa các dòng sau:
var pageCount=10;
var displayPageNum=6;
Trong đó:
PageCount thể hiện số bài viết hiển thị trên một trang. Thay đổi số lượng theo ý định đặt số bài viết trên một trang của bạn.
displayPageNum: thể hiện sỗ trang sẽ hiển thị để bạn chọn lựa trong danh sách list.
Với thủ thuật danh mục số trang Page Navigation cho Blogger của Mohamed Rias, cách giải quyết trên đã giúp bạn thực hiện được lỗi không hiển thị.
Tuy nhiên nếu bạn lựa chọn xem theo Label thì hiển thị không chính xác, với abu-farhan còn sửa được cả hiển thị trong Label.
Để thực hiện bạn làm như sau:
Bước 1 : Thêm Label Gadget (Layout –> page elements –> Add Gadget –> Select Labels)
Bước 2 : Vào Blogger >> Layout >> Edit HTML . Đừng quên sao lưu dự phòng template (Download Full Template)
Bước 3 : Search đoạn code dưới:
<a expr:dir=’data:blog.languageDirection’ expr:href=’data:label.url’><data:label.name/></a>và thay chúng bằng đoạn code:
<script type='text/javascript'>và Click “save template” là bạn đã thực hiện xong hoàn hảo thủ thuật Danh mục số trang.
var lblname = "<data:label.name/>"; lblname2 = encodeURIComponent(lblname); var feedlink = '/search/label/' + lblname2+'?&max-results=10'; document.write('<a href="' + feedlink + '">'+lblname+'</a>'); </script>
Chúc các bạn thành công. Bạn có xem bản Demo : click Demo
khó hiểu quá :(
ReplyDeletetớ thấy nó nặng nề nhỉ :D www.show9vip.com
ReplyDeleteCũng bình thường không đến nỗi nào bạn à.
ReplyDeleteCái này chỉ hiện có 500 post thôi, ko hiện số page nếu vượt quá 500 post. Quá thì nó chỉ hiện ra home = số bài viết trong ngày của mình.
ReplyDeleteNếu tôi để trong settings là 10 post nhưng trong ngày tôi chỉ đăng có 3 thì nó sẽ hiện 3 chứ ko hiện 10. Đề nghị fig lỗi này giúp tôi với.
Anh ơi. Ko bít làm sao mà cái phân trang "bài đăng cũ hơn-trang chủ-bài đăng mới hơn" của em nó ko hiện ra nữa. Giờ phải làm sao hả anh?
ReplyDeleteCái này của mình cũng bị mấy lần, để nhớ xem mình giải quyết như thế nào nhé.
ReplyDeletevâng, nhanh anh nha :D
ReplyDeletebác chính ở..em nghi cái thủ thuật phân trang này có vấn đề.thấy nhiều người than ko hiển thị oder-newer post.hy vọng bác sớm tìm ra cách khắc phục
ReplyDeletethì cái này là để thay thế cái oder-newer post mà, older hay new chỉ có thể hiển thị 10 bài mới hơn hay cũ hơn, với thủ thuật này bạn có thể tời trang đích nhanh và thuận tiện hơn mà Tipun ơi.
ReplyDeleteSao thử mà nó ko hiển thị vậy
ReplyDeleteWidget này có hoạt động trên 1 số temp chỉnh sửa lại ko ?
hay chỉ h/đ trên temp classic ?
thanks 4 sharing !
Không được
ReplyDeletehttp://copythuthuat.blogspot.com