Related Posts
with thumbnails ở đây thừa hưởng từ thủ thuật trên mạng là loại bỏ bài viết
đang xem ở danh sách bài viết liên quan thì ở bản này thêm hình ảnh, ngày tháng
đăng bài và số lượng comments trong bài viết đó, đây là những thông tin cần
thiết;
Ở đây mình giới thiệu 2 kiểu là hiển
thị theo hàng dọc và hiển thị theo hàng ngang.
1. Hiển thị Related Posts theo hàng
dọc.
* Bước 1: Thêm đoạn mã dưới đây
vào trước thẻ ]]></b:skin> trong template của bạn.
#related-posts{float:left}#related-posts ul{margin:0;padding:0;list-style-type:none}#related-posts ul li{padding:10px 0}#related-posts ul li:hover img{width:42px;height:42px;padding:0}#related-posts img{float:left;border:1px solid #BBB;margin-right:10px;width:36px;height:36px;background:#FFF;padding:3px}#related-posts h3{margin:0;font-size:16px}
*Bước 2: Thêm đoạn mã dưới đây vào
sau thẻ <div class='post-footer'> trong template của bạn.
<b:if cond='data:blog.pageType == "item"'><div style='clear:both'/><div id='related-posts'><script type='text/javascript'>var ry='<h2>Bài viết liên quan</h2>';rn='<h2>Không có Bài viết liên quan</h2>';rcomment='Nhận xét';rdisable='Tắt Nhận xét';commentYN='yes';</script><script type='text/javascript'>//<![CDATA[var dw='';titles=new Array();titlesNum=0;urls=new Array();timeR=new Array();thumb=new Array();commentsNum=new Array();comments=new Array();function related_results_labels(c){for(var b=0;b<c.feed.entry.length;b++){var d=c.feed.entry[b];titles[titlesNum]=d.title.$t;for(var a=0;a<d.link.length;a++){if('thr$total' in d){commentsNum[titlesNum]=d.thr$total.$t+' '+rcomment}else{commentsNum[titlesNum]=rdisable};if(d.link[a].rel=="alternate"){urls[titlesNum]=d.link[a].href;timeR[titlesNum]=d.published.$t;if('media$thumbnail' in d){thumb[titlesNum]=d.media$thumbnail.url}else{thumb[titlesNum]='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXlYm_KrKQwHeLhbHW-Hd6TOs_sCJITFAkyQ62ZeFEEP1IV8e618zowg30x1hu9gJ4XkfjCC5eK7PKYrkcWAVpEiiEXpQIUbiCbO6SUDcQXJvLcSYjiV9d2lV5Ub8GMMlkfTi1azrATPH6/'};titlesNum++;break}}}}function removeRelatedDuplicates(){var b=new Array(0);c=new Array(0);e=new Array(0);f=new Array(0);g=new Array(0);for(var a=0;a<urls.length;a++){if(!contains(b,urls[a])){b.length+=1;b[b.length-1]=urls[a];c.length+=1;c[c.length-1]=titles[a];e.length+=1;e[e.length-1]=timeR[a];f.length+=1;f[f.length-1]=thumb[a];g.length+=1;g[g.length-1]=commentsNum[a]}}urls=b;titles=c;timeR=e;thumb=f;commentsNum=g}function contains(b,d){for(var c=0;c<b.length;c++){if(b[c]==d){return true}}return false}function printRelatedLabels(a){var y=a.indexOf('?m=0');if(y!=-1){a=a.replace(/\?m=0/g,'')}for(var b=0;b<urls.length;b++){if(urls[b]==a){urls.splice(b,1);titles.splice(b,1);timeR.splice(b,1);thumb.splice(b,1);commentsNum.splice(b,1)}}var c=Math.floor((titles.length-1)*Math.random());var b=0;if(titles.length==0){dw+=rn}else{dw+=ry;dw+='<ul>';while(b<titles.length&&b<20&&b<maxresults){if(y!=-1){urls[c]=urls[c]+'?m=0'}if(commentYN=='yes'){comments[c]=' - '+commentsNum[c]}else{comments[c]=''};dw+='<li><img alt="'+titles[c]+'" src="'+thumb[c]+'"/><div><h3><a href="'+urls[c]+'" rel="nofollow">'+titles[c]+'</a></h3><span>'+timeR[c].substring(8,10)+'/'+timeR[c].substring(5,7)+'/'+timeR[c].substring(0,4)+comments[c]+'</span></div></li><div style="clear:both"></div>';if(c<titles.length-1){c++}else{c=0}b++}dw+='</ul>'};urls.splice(0,urls.length);titles.splice(0,titles.length);document.getElementById('related-posts').innerHTML=dw};//]]></script><b:loop values='data:post.labels' var='label'><script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&callback=related_results_labels"' type='text/javascript'/></b:loop><script type='text/javascript'>var maxresults=6;removeRelatedDuplicates();printRelatedLabels('<data:post.url/>');</script></div><div style='clear:both'/></b:if>
2. Hiển thị Related Posts theo hàng ngang.
* Bước 1: Thêm đoạn mã dưới đây
vào trước thẻ ]]></b:skin> trong template của bạn.
#related-posts{float:left}#related-posts ul{margin:5px 0;width:524px;padding:0;list-style-type:none}#related-posts ul li{position:relative;float:left;border:0 none;margin-right:11px;width:76px}#related-posts ul li:hover{z-index:98}#related-posts ul li:hover img{border:3px solid #BBB}#related-posts ul li:hover div{position:absolute;top:40px;left:10px;margin-left:0;width:200px}#related-posts ul li img{border:3px solid #DDD;width:70px;height:70px;background:#FFF}#related-posts ul li div{position:absolute;z-index:99;margin-left:-999em}#related-posts ul li .title{border:1px solid #CCC;background:#FFF;padding:5px 10px}
* Bước 2: Thêm đoạn mã dưới đây
vào sau thẻ <div class='post-footer'> trong template của bạn.
<b:if cond='data:blog.pageType == "item"'><div style='clear:both'/><div id='related-posts'><script type='text/javascript'>var ry='<h2>Bài viết liên quan</h2>';rn='<h2>Không có Bài viết liên quan</h2>';rcomment='Nhận xét';rdisable='Tắt Nhận xét';commentYN='yes';</script><script type='text/javascript'>//<![CDATA[var nothumb='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXlYm_KrKQwHeLhbHW-Hd6TOs_sCJITFAkyQ62ZeFEEP1IV8e618zowg30x1hu9gJ4XkfjCC5eK7PKYrkcWAVpEiiEXpQIUbiCbO6SUDcQXJvLcSYjiV9d2lV5Ub8GMMlkfTi1azrATPH6/';dw='';titles=new Array();titlesNum=0;urls=new Array();time=new Array();thumb=new Array();commentsNum=new Array();comments=new Array();function related_results_labels(c){for(var b=0;b<c.feed.entry.length;b++){var d=c.feed.entry[b];titles[titlesNum]=d.title.$t;for(var a=0;a<d.link.length;a++){if('thr$total' in d){commentsNum[titlesNum]=d.thr$total.$t+' '+rcomment}else{commentsNum[titlesNum]=rdisable};if(d.link[a].rel=="alternate"){urls[titlesNum]=d.link[a].href;time[titlesNum]=d.published.$t;if('media$thumbnail' in d){thumb[titlesNum]=d.media$thumbnail.url}else{thumb[titlesNum]=nothumb};titlesNum++;break}}}}function removeRelatedDuplicates(){var b=new Array(0);c=new Array(0);e=new Array(0);f=new Array(0);g=new Array(0);for(var a=0;a<urls.length;a++){if(!contains(b,urls[a])){b.length+=1;b[b.length-1]=urls[a];c.length+=1;c[c.length-1]=titles[a];e.length+=1;e[e.length-1]=time[a];f.length+=1;f[f.length-1]=thumb[a];g.length+=1;g[g.length-1]=commentsNum[a]}}urls=b;titles=c;time=e;thumb=f;commentsNum=g}function contains(b,d){for(var c=0;c<b.length;c++){if(b[c]==d){return true}}return false}function printRelatedLabels(a){var y=a.indexOf('?m=0');if(y!=-1){a=a.replace(/\?m=0/g,'')}for(var b=0;b<urls.length;b++){if(urls[b]==a){urls.splice(b,1);titles.splice(b,1);time.splice(b,1);thumb.splice(b,1);commentsNum.splice(b,1)}}var c=Math.floor((titles.length-1)*Math.random());var b=0;if(titles.length==0){dw+=rn}else{dw+=ry;dw+='<ul>';while(b<titles.length&&b<20&&b<maxresults){if(y!=-1){urls[c]=urls[c]+'?m=0'}if(commentYN=='yes'){comments[c]=' - '+commentsNum[c]}else{comments[c]=''};dw+='<li><a href="'+urls[c]+'" rel="nofollow"><img alt="'+titles[c]+'" src="'+thumb[c]+'"/></a><div class="title"><h3><a href="'+urls[c]+'" rel="nofollow">'+titles[c]+'</a></h3><span>'+time[c].substring(8,10)+'/'+time[c].substring(5,7)+'/'+time[c].substring(0,4)+comments[c]+'</span></div></li>';if(c<titles.length-1){c++}else{c=0}b++}dw+='</ul>'};urls.splice(0,urls.length);titles.splice(0,titles.length);document.getElementById('related-posts').innerHTML=dw};//]]></script><b:loop values='data:post.labels' var='label'><script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&callback=related_results_labels"' type='text/javascript'/></b:loop><script type='text/javascript'>var maxresults=6;removeRelatedDuplicates();printRelatedLabels('<data:post.url/>');</script></div><div style='clear:both'/></b:if>
maxresults là số bài viết liên quan được hiển thị, mình đặt là 6. Mặc
định số lượng comments sẽ được hiển thị, nếu bạn không muốn hãy thay ký tự yes
màu tím thành ký tự khác, no chẳng hạn. Số lượng bài viết ở mỗi nhãn được tải
về từ feed lấy theo mặc định là 25 bài mới nhất, nếu nhiều hơn mình nghĩ sẽ làm
chậm tốc độ blog.
Về CSS cũng như bao thủ thuật khác mình không chú trọng đến giao diện mà
quan tâm đến việc hiển thị trên các trình duyệt nhiều hơn. Ngoài ra mặc dù
thông tin hiển thị bằng Javascript nhưng mình vẫn thêm thẻ alt cho ảnh, tiêu đề
đặt trong cặp thẻ H3 và thuộc tính rel=nofollow cho thẻ liên kết. Mình nhận thấy
Google vẫn hiển thị thông tin viết bởi Javascript trong kết quả tìm kiếm.
Nguồn: Internet
No comments:
Post a Comment