Thứ Ba, 30 tháng 9, 2014

TÌM HIỂU THUỘC TÍNH BORDER TRONG CSS

Thuộc tính này thì đảm bảo là có trên mọi website và hầu như ai ai cũng biết. Thế đem vào đây viết bài chi vậy? Lý do rất đơn giản mình viết bài này ở đây là để giới thiệu cho những ai chưa biết, hoặc đơn thuần là biết nhưng nhiều khi chưa biết hết. Không lằng nhằng nữa bắt đầu vào việc thôi.



Tìm hiểu thuộc tính border trong CSS
Thuộc tính border là thuộc tính giúp chúng ta thêm đường viền vào đối tượng, không giống như nhiều thuộc tính cơ bản khác, khi sử dụng để trông được một cách đầy đủ và hoàn thiện nhất nó yêu cầu chúng ta cung cấp 3 điều sau:
Độ dày đường viên
Kiểu đường viền
Màu đường viền
Về độ dày và màu đường viền thì không phải nói gì rồi, còn kiểu đường viền, chúng ta có các lựa chọn như sau: none, dotted, dashed, solid, groove, ridge, inset, và outset.

Sau đây mình xin được tạo ra một đối tượng và tạo đường viền cho nó:

border: 1px none #DDD

border: 2px dotted #DDD

border: 3px dashed #DDD

border: 4px solid #DDD

border: 5px groove #DDD

border: 6px ridge #DDD

border: 7px inset #DDD

border: 8px outset #DDD


Theo mình nghĩ với những ví dụ trực tiếp như trên mình bạn đã đủ để bạn hiểu thuộc tính boder là như thế nào rồi, có lẽ là bài viết này không nói đến gì mới lạ cho lắm, nhưng rất mong rằng nó hữu ích cho một số người đang tìm và học CSS.

P/S: Sau này sau khi hướng dẫn những điều cơ bản về CSS2 xong mình sẽ chuyển sang hướng dẫn lấn sang những thủ thật cực ngầu sử dụng CSS3 đến các bạn.
http://www.kslzone.net/2014/06/tim-hieu-thuoc-tinh-border-trong-css.html

Đọc Bài

BÀI VIẾT LIÊN QUAN CÓ HÌNH ẢNH CHUẨN HTML5

Trước đây mình có giới thiệu đến các bạn một tiện ích bài viết liên quan đạt chuẩn HTML5, nhưng có một điều là nó không có hình ảnh mà chỉ có tiêu đề của bài viết liên quan đó thôi. Đối với mình thì có hình ảnh hay không cũng chã quan trọng, điều quan trọng là tiêu đề của bài viết liên quan có đủ sức hấp dẫn đến người đọc hay không thôi.

Bài viết liên quan có hình ảnh chuẩn HTML5

Hôm nay bài viết này mình sẽ chia sẻ tiện ích bài viết liên quan có hình ảnh lại đạt cả chuẩn HTML5 nữa cho những bạn đang có nhu cầu. Tiện ích này là của người Indonesia tiếp, như mình đã nói ở trước hì Indonesia rất là chuộng Blogger và có rất nhiều hack mod hay dành cho nó.

Tiện ích bài viết liên quan mà mình chia sẻ ở đây mình đã coding lại một vài thứ, tiện ích này ngoài chuẩn HTML5, thì mình đã chỉnh sửa lại giao diện mặc định mà tác giả chia sẻ (mặc định trong xấu quá). Công thêm vào đó mình tích hợp tính năng cắt và resize ảnh thumbnail. Khiến cho tiện ích này đẹp và tối ưu nhất, hình ảnh không còn mờ như cái cũ nữa.


Bài viết liên quan có hình ảnh chuẩn HTML5
Bắt tay vào làm việc thôi đầu tiên thì các bạn tìm và chèn đoàn css này lên trên thẻ ]]></b:skin>

/* RELATED POSTS */
.related-post {
background-color: #fff;
font-size: 16px;
margin-bottom: 40px;
padding: 40px;
}
.related-post a {
color : #333;
}
.related-post h4 {
margin : 0 0 0.5em;
text-transform : uppercase;
color : #555;
}
.related-post-style-3, .related-post-style-3 li {
margin : 0;
padding : 0;
list-style : none;
overflow-wrap : break-word;
overflow : hidden;
}
.related-post-style-3 .related-post-item {
display : block;
float : left;
width : 230px;
margin-right : 10px;
}
.related-post-style-3 .related-post-item:focus {
outline : none;
}
.related-post-style-3 .related-post-item-thumbnail {
display : block;
margin : 0 0 10px;
width : 101%;
height : 125px;
background-color : transparent;
border : none;
padding : 0;
}
.related-post-style-3 .related-post-item-title {
font-weight : bold;
}


@media only screen and (max-width: 800px) {
    .related-post { padding: 0 }
}

Bước tiếp theo các bạn tìm đến chỗ nào trên blog mà các bạn muốn hiển thị tiện ích bài viết liên quan có hình ảnh đặt chuẩn HTML5 này và dán nó vào. Đối với cuối bài viết thì thông thường các bạn tìm đến

<div class='post-footer'>
và chèn xuống dưới
<div class='related-post' id='related-post'/>
  <script type='text/javascript'>
  var labelArray = [<b:if cond='data:post.labels'><b:loop values='data:post.labels' var='label'>
          &quot;<data:label.name/>&quot;<b:if cond='data:label.isLast != &quot;true&quot;'>,</b:if>
      </b:loop></b:if>];
  var relatedPostConfig = {
      homePage: &quot;<data:blog.homepageUrl/>&quot;,
      widgetTitle: &quot;&lt;h4&gt;Bài viết liên quan:&lt;/h4&gt;&quot;,
      numPosts: 3,
      summaryLength: 370,
      titleLength: &quot;auto&quot;,
      thumbnailW: 230,
      thumbnailH: 125,
      noImage: &quot;data:image/png;base64,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&quot;,
      containerId: &quot;related-post&quot;,
      newTabLink: false,
      moreText: &quot;Read More&quot;,
      widgetStyle: 3,
      callBack: function() {}
  };
  </script>
<script type='text/javascript'>
//<![CDATA[
var randomRelatedIndex,showRelatedPost;(function(n,m,k){var d={widgetTitle:"<h4>Related Posts:</h4>",widgetStyle:3,homePage:"http://www.kslzone.net",numPosts:3,summaryLength:370,titleLength:"auto",thumbnailW:72,thumbnailH:72,noImage:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAA3NCSVQICAjb4U/gAAAADElEQVQImWOor68HAAL+AX7vOF2TAAAAAElFTkSuQmCC",containerId:"related-post",newTabLink:false,moreText:"Read more",callBack:function(){}};for(var f in relatedPostConfig){d[f]=(relatedPostConfig[f]=="undefined")?d[f]:relatedPostConfig[f]}var j=function(a){var b=m.createElement("script");b.type="text/javascript";b.src=a;k.appendChild(b)},o=function(b,a){return Math.floor(Math.random()*(a-b+1))+b},l=function(a){var p=a.length,c,b;if(p===0){return false}while(--p){c=Math.floor(Math.random()*(p+1));b=a[p];a[p]=a[c];a[c]=b}return a},e=(typeof labelArray=="object"&&labelArray.length>0)?"/-/"+l(labelArray)[0]:"",h=function(b){var c=b.feed.openSearch$totalResults.$t-d.numPosts,a=o(1,(c>0?c:1));j(d.homePage.replace(/\/$/,"")+"/feeds/posts/summary"+e+"?alt=json-in-script&orderby=updated&start-index="+a+"&max-results="+d.numPosts+"&callback=showRelatedPost")},g=function(z){var s=document.getElementById(d.containerId),x=l(z.feed.entry),A=d.widgetStyle,c=d.widgetTitle+'<ul class="related-post-style-'+A+'">',b=d.newTabLink?' target="_blank"':"",y='<span style="display:block;clear:both;"></span>',v,t,w,r,u;if(!s){return}for(var q=0;q<d.numPosts;q++){if(q==x.length){break}t=x[q].title.$t;w=(d.titleLength!=="auto"&&d.titleLength<t.length)?t.substring(0,d.titleLength)+"&hellip;":t;r=("media$thumbnail"in x[q]&&d.thumbnailW!==false)?x[q].media$thumbnail.url.replace(/\/s[0-9]+(\-c)?/,"/s"+d.thumbnailW+"-h"+d.thumbnailH+"-c"):d.noImage;u=("summary"in x[q]&&d.summaryLength>0)?x[q].summary.$t.replace(/<br ?\/?>/g," ").replace(/<.*?>/g,"").replace(/[<>]/g,"").substring(0,d.summaryLength)+"&hellip;":"";for(var p=0,a=x[q].link.length;p<a;p++){v=(x[q].link[p].rel=="alternate")?x[q].link[p].href:"#"}if(A==2){c+='<li><img alt="thumbnail" class="related-post-item-thumbnail" src="'+r+'" width="'+d.thumbnailW+'" height="'+d.thumbnailH+'" title="'+t+'"><a class="related-post-item-title" title="'+t+'" href="'+v+'"'+b+">"+w+'</a><span class="related-post-item-summary"><span class="related-post-item-summary-text">'+u+'</span> <a href="'+v+'" class="related-post-item-more"'+b+">"+d.moreText+"</a></span>"+y+"</li>"}else{if(A==3||A==4){c+='<li class="related-post-item" tabindex="0"><a class="related-post-item-title" href="'+v+'"'+b+'><img alt="thumbnail" class="related-post-item-thumbnail" src="'+r+'" width="'+d.thumbnailW+'" height="'+d.thumbnailH+'" title="'+t+'"></a><div class="related-post-item-tooltip"><a class="related-post-item-title" title="'+t+'" href="'+v+'"'+b+">"+w+"</a></div>"+y+"</li>"}else{if(A==5){c+='<li class="related-post-item" tabindex="0"><a class="related-post-item-wrapper" href="'+v+'" title="'+t+'"'+b+'><img alt="thumbnail" class="related-post-item-thumbnail" src="'+r+'" width="'+d.thumbnailW+'" height="'+d.thumbnailH+'" title="'+t+'"><span class="related-post-item-tooltip">'+w+"</span></a>"+y+"</li>"}else{if(A==6){c+='<li><a class="related-post-item-title" title="'+t+'" href="'+v+'"'+b+">"+w+'</a><div class="related-post-item-tooltip"><img alt="thumbnail" class="related-post-item-thumbnail" src="'+r+'" width="'+d.thumbnailW+'" height="'+d.thumbnailH+'" title="'+t+'"><span class="related-post-item-summary"><span class="related-post-item-summary-text">'+u+"</span></span>"+y+"</div></li>"}else{c+='<li><a title="'+t+'" href="'+v+'"'+b+">"+w+"</a></li>"}}}}}s.innerHTML=c+="</ul>"+y;d.callBack()};randomRelatedIndex=h;showRelatedPost=g;j(d.homePage.replace(/\/$/,"")+"/feeds/posts/summary"+e+"?alt=json-in-script&orderby=updated&max-results=0&callback=randomRelatedIndex")})(window,document,document.getElementsByTagName("head")[0]);
//]]>
  </script>

Toàn bộ những đoạn chữ mà mình tô màu đỏ là những thứ bạn có thể thay đổi cho phù hợp với website của bạn, ngoài ra nếu không biết thì không nên thay đổi gì khác nhé. Chú thích cho những thứ đó:

  • thumbnailW: Chiều rộng ảnh thumbnail
  • thumbnailH: Chiều cao ảnh thumbnail
  • numPosts: Số lượng bài viết liên quan
  • Bài viết liên quan: Tiêu đề của tiện ích, bạn có thể thay bằng bất cứ gì mà bạn thích

Lưu ý là sau khi thay đổi chiểu cao và chiều rộng ở tùy chọn thì ngoài kích thước thực tế của ảnh tiện ích vẫn chưa thay đổi gì đâu, bạn phải thay đổi thủ công phần css ở đâu trang nữa, nhất là 2 thuộc tính mà mình cho màu đỏ.

Lời kết
Tiện ích bài viết liên quan này có một điều nhỏ không biết phải nói là ưu điểm hay là nhược điểm so với các bài viết liên quan bình thường không đạt chuẩn nữa. Nó random lấy chỉ "một" nhãn ngẫu nhiên và lấy ra bài viết có trong nhãn đó thôi chứ không lấy toàn bộ các bài của các nhãn liên quan như những tiện ích bình thường, nhưng nghĩ ra thì nó hên xui sẽ đưa ra cho khách truy cập chính xác hơn những gì khách truy cập đang tìm kiếm. Ngoài ra một nhược điểm nhỏ nữa là nó có thể lấy cả bài viết hiện hành cho vào bài viết liên quan luôn. Nếu có thắc mắc gì thêm về tiện ích này thì cứ để lại nhận xét cho mình ở dưới nhé!

P/S: Mình nhớ có bạn muốn có tiện ích bài viết liên quan giống của mình nên giao diện ở tiện ích này mình đã làm cho nó khá tượng tự rồi đấy :D


"nguồn bài viết từ KslZone.NET".

Đọc Bài

AUTO READMORE KHÔNG THUMBNAIL CHO BLOGGER

Thoáng lướt qua tiêu đề chắc nhiều bạn sẽ nghĩ không có thumbnail thì xài làm gì nhỉ. Thực chất để lấy ra hình ảnh đầu tiên trong bài viết của Blogger thì tương đối rất dễ dàng, bạn có thể hoàn toàn sử dụng code mặc định của nó mà không cần phiền hà đến Javascript và các thứ khác chi cho mất công, thêm vào lại chỉ tổ giảm tốc độ tải trang thôi.

Auto Readmore không thumbnail cho Blogger

Chính vì thế trước mắt bài viết này mình sẽ chia sẻ với các bạn Auto Readmore không thumbnail trước, còn những bài viết tới mình sẽ hướng dẫn các bạn lấy ra ảnh thumbnail khỏi sử dụng js, rồi kết hợp chúng lại với nhau để sử dụng thế nào.

Auto Readmore không thumbnail cho Blogger
Cái này thì tương tự như mấy cái auto readmore đợt trước thôi, mà mình hướng dẫn lại từ đầu kẻo mấy bạn mới không biết. Đầu tiên các bạn chèn đoạn mã sau đây lên trên thẻ </head>

<script type='text/javascript'>//<![CDATA[
function removeHtmlTag(strx, chop) {
    if (strx.indexOf("<") != -1) {
        var s = strx.split("<");
        for (var i = 0; i < s.length; i++) {
            if (s[i].indexOf(">") != -1) {
                s[i] = s[i].substring(s[i].indexOf(">") + 1, s[i].length);
            }
        }
        strx = s.join("");
    }
    chop = (chop < strx.length - 1) ? chop : strx.length - 2;
    while (strx.charAt(chop - 1) != ' ' && strx.indexOf(' ', chop) != -1) chop++;
    strx = strx.substring(0, chop - 1);
    return strx + '...';
}


function createSummary(pID) {
    var div = document.getElementById(pID);
    var summ = 150;
    var summary = '<div><p>' + removeHtmlTag(div.innerHTML, summ) + '</div></p>';
    div.innerHTML = summary;
}
//]]></script>
bạn có thể thay thế số lượng ký tự sẽ lấy ra ở ngay bên trên summ = 150.

Tiếp tục để nó hoạt động bạn tìm và thay thế toàn bộ đoạn mã sau đây

<data:post.body/>

bằng

<b:if cond='data:blog.pageType == &quot;item&quot;'>
 <data:post.body/>
<b:else/>
<b:if cond='data:blog.pageType == &quot;static_page&quot;'>
 <data:post.body/>
<b:else/>
<div expr:id='&quot;summary&quot; + data:post.id'>
 <data:post.body/>
</div>
<script type='text/javascript'> createSummary(&quot;summary<data:post.id/>&quot;);</script>
</b:if>
</b:if>
lưu ý là bên trong đoạn mã thay thế cũng có chứa <data:post.body/> nên phải để ý không lại chèn một nùi code là tiêu đấy nhé. Xong hết thì lưu lại template và kiểm thử.

Lời kết
Đoạn auto readmore này sẽ hoạt động nhanh hơn vì nó không phải làm công việc tìm hình ảnh đầu tiên mà lôi ra nữa. Có thể là đoạn auto readmore với thumbnail thì tiện hơn, nhưng tiện hơn tương đương tới tăng thêm một tẹo thời gian tải trang web.

"nguồn bài viết từ KslZone.NET".

Đọc Bài

THÊM QUẢNG CÁO XUỐNG DƯỚI BÀI VIẾT ĐẦU TIÊN BLOGGER

Đối với những ban chưa hình dung ra được mình xin hướng dẫn cụ thể ở ngay dưới dây. Đơn giản bạn chỉ cần làm là xác định vị trí của bài viết, tiếp đến áp dụng điều kiện thực thi quảng cáo.

Thêm quảng cáo xuống dưới bài viết đầu tiên Blogger

1. Đăng nhập vào Blogger >> Mẫu >> Chỉnh sửa HTML



2. Tim đến thẻ sau đây

<b:include data='post' name='post'/>

Đoạn này là vị trí thêm vào bài viết cho blog của chúng ta.

3. Chèn đoạn mã  sau vào phía dưới để hiển thị dưới bài viết đầu tiên

<b:if cond='data:blog.pageType == &quot;index&quot;'>
<b:if cond='data:post.isFirstPost'>
<!--Add Adsense Code Here / Under the First Post-->
QUẢNG CÁO CỦA BẠN Ở ĐÂY
<!--Add Adsense Code Here / Under the First Post-->
</b:if></b:if>

ở đoạn mã trên mình có sử dụng 2 điều kiện là, trang chủ data:blog.pageType == &quot;index&quot; , và bài viết đầu tiên data:post.isFirstPost . Nếu bạn bỏ điều kiện trang chủ, quảng cáo sẽ hiện dưới tất cả trang bài viết (nếu bạn có ý định chèn quảng cáo vào vừa dưới bài viết đầu vừa cuối bài viết thì bạn có thể bỏ thuộc điều kiện trang chủ.

4. Lưu lại giao diện hiện tại và tận hưởng thành quả.

Như vậy bạn đã chèn xong quảng cáo vào dưới bài viết đầu tiên blog của bạn. Ở các bài viết sắp tới, mình sẽ cố gắng hướng dẫn các bạn những thủ thuật chuyên sâu hơn về Blogger mời các bạn chú ý đón xem. Thanks!

"nguồn bài viết từ KslZone.NET".
Đọc Bài

CHỐNG SPAM BACKLINKS Ở NHẬN XÉT CHO BLOGGER

Spam nhận xét để lấy backlinks là một trong những thứ mà chúng ta có thể thấy ở hầu hết các website nói chung, và các Blogger nói riêng. Việc mà mình muốn nói đến ở đây là, mặc dù Blogger đã mặc định cho thuộc tính nofollow vào nhận xét, nhưng việc những backlink tồn tại ở phần nhận xét một phần nào đó chuyển hướng một ít lượng khách truy cập của chúng ta sang chỗ khác. 

Một thời gian tìm tòi và lục lọi trên Internet mình đã tìm ra được một đoạn jQuery nhỏ nhoi này mà mình cảm thấy rất hữu ích, nó chống khách truy cập nhắp vào backlink ở phần nhận xét mà những spammer để lại.

Chống spam backlinks ở nhận xét cho Blogger
1. Đăng nhập vào Blogger >> Mẫu >> Chỉnh sửa HTML

Chống Spam Backlinks Ở Nhận Xét Cho Blogger


2. Tìm đến thẻ </head> và thêm đoạn jQuery sau vào bên trên

<script>
$(document).ready(function() {
    $(&#39;.comment-content a&#39;).click(function(e) {
        e.preventDefault();
       
    });
});
</script>

3. Lưu lại giao diện và kiểm thử.

Đoạn mã này có chức năng không cho khách truy cập nhắp vào những đường link tại khu vực nhận xét của bạn, có nghĩa là chỉ được thấy chứ không cho "rờ" vào. Và sau khi cài đặt thành công đoạn jQuery trên cho blog của bạn, mình nghĩ bạn sẽ bớt đi phàn lo lắng về những Spammer để lại backlink tại blog của bạn nữa.


"nguồn bài viết từ KslZone.NET".
Đọc Bài

AUTO READMORE KHÔNG JS LẤY ẢNH ĐẦU TIÊN

Tại thời điểm hiện tại thì Blogger khá là phổ biến với dân SEOer, hầu hết mọi cá nhân tổ chức không ít thì nhiều đều sử dụng nó làm website vệ tinh cho mình. Thông thưởng thì đối với một website vệ tinh thì có người thì tự xây dựng nội dung như một website chính thức - TỐT, có người thì sử dụng những phần mềm để auto post bài lấy tin từ những website tin tức.

Auto Readmore không JS lấy ảnh đầu tiên


Vấn đề xây ra thường xuyên là đối với những website từ động lấy tin ở các website khác là đối với những website đang xài Auto Readmore với Thumbnail không sử dụng Javascript mà không tải hoặc đăng lại ảnh, thì nó sẽ không xuất hiện ảnh thumbnails. Điều này không những chỉ gặp ở những website auto post bài, mà còn ngay cả với chúng ta nữa.

Bài viết này mình xin chia sẻ với các bạn Auto Readmore không sử dụng Javascript lấy ảnh đầu tiên làm ảnh thumbnail do mình chỉnh sửa cho các bạn có nhu cầu sử dụng.

Auto Readmore không sử dụng Javascript lấy ảnh đầu tiên làm ảnh thumbnail

Đối với đoạn mã dưới này thì nó khá tương tự với đoạn mã Auto Readmore trước kia, mình chỉnh sửa lại đôi chút thôi, cái này khá đơn giản mà thấy nhiều bạn cũng có nhiêu cầu nên mình chỉnh sơ lại luôn.

Cách thức sử dụng cũng tương tự như cách sử dụng toàn bộ những đoạn mã auto readmore trước kia, bạn tìm đến các thẻ

<data:post.body/>

và thay thế toàn bộ chúng bằng

<b:if cond='data:blog.pageType != &quot;item&quot;'>
 <b:if cond='data:blog.pageType != &quot;static_page&quot;'>
   <b:if cond='data:post.firstImageUrl'>
    <div class='postThumb'>
 <img expr:alt='data:post.title' expr:src='data:post.firstImageUrl' expr:title='data:post.title'/>
    </div>
   </b:if>
   <data:post.snippet/>
  <div class='jump-link'>
   <a expr:href='data:post.url' expr:title='data:post.title'><data:post.jumpText/></a>
  </div>
 <b:else/>
  <data:post.body/>
 </b:if>
<b:else/>
 <data:post.body/>
</b:if>

Đoạn mã trên là có hình thì nó hiện không có thì thôi, bạn nào muốn hiện ảnh mặc định cho mấy bà viết không có hình thì xài đoạn mã sau

<b:if cond='data:blog.pageType != &quot;item&quot;'>
 <b:if cond='data:blog.pageType != &quot;static_page&quot;'>
   <b:if cond='data:post.firstImageUrl'>
    <div class='postThumb'>
 <img expr:alt='data:post.title' expr:src='data:post.firstImageUrl' expr:title='data:post.title'/>
    </div>
   <b:else/>
    <div class='postThumb'>
 <img expr:alt='data:post.title' expr:title='data:post.title' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnXRQzh2VJQYayvxDfEMIJRebRx6r0rUb2pswfd5wg8MCdM__hAx97kHMA5tUMo5MNbWyuZBfuIKtAJhhfCgdVZzrw6W1XY0T-DGkBpqMxb6mp2NkCm3JfkuQ8v0jPCDWFBOnYIh4p2vnv/w360-c-h220/no-image.png'/>
    </div>
   </b:if>
   <data:post.snippet/>
  <div class='jump-link'>
   <a expr:href='data:post.url' expr:title='data:post.title'><data:post.jumpText/></a>
  </div>
 <b:else/>
  <data:post.body/>
 </b:if>
<b:else/>
 <data:post.body/>
</b:if>

Bước cuối cùng chèn đoạn css sau lên trên thẻ ]]></b:skin>

.postThumb { float: left; margin-right: 20px; width: 300px; height: 250px }
các bạn nhớ thay thế chiều rộng chiều cao cũng như vị trí của hình ảnh mà bạn mong muốn, rồi lưu lại.

Lời kết
Đây là đoạn mã mình viết lại cho mấy bạn có nhu cầu trong không sử dụng Javascript, nhưng vẫn muốn có ảnh up lên ở bên ngoài. Đối với thủ thuật này thì đôi khi hình ảnh sẽ bị bóp méo vì sử dụng css để căn chỉnh nó, bạn có thể sử dụng đoạn js ở bài này với #Blog1 là ID của phần blog, nhưng mà bạn phải lưu ý bỏ nó vào cặp thẻ điều kiện sau

<b:if cond='data:blog.pageType != &quot;index&quot;'>
<b:if cond='data:blog.pageType != &quot;static_page&quot;'>
ĐOẠN JS
</b:if></b:if>
để nó không resize và cắt ở cả trang bài viết nhé.


"nguồn bài viết từ KslZone.NET".
Đọc Bài

THẺ ĐIỀU KIỆN VÀ CÁCH SỬ DỤNG ĐỐI VỚI BLOGGER

Nếu bạn là một lập trình viên, hay đơn giản đang học công nghệ thông tin thì bạn sẽ biết chắc chắn bất kỳ ngôn ngữ lập trình nào cũng có câu (thẻ) điều kiện. Và hôm nay mình muốn hướng dẫn các bạn về thẻ điều kiện cho Blogger, để tùy chỉnh một số thứ như tiện ích, css, javascript, html tùy chọn sẽ được hiện ở đâu, trang nào,... giúp bạn có một website vượt trội hơn. Về vấn đề sử dụng khá đơn giản nên các bạn có thể yên tâm nếu các bạn không biết gì và lập trình.


Thẻ điều kiện và cách sử dụng đối với Blogger


Cú pháp thẻ điều kiện của Blogger
Thẻ điều kiện của Blogger có cú pháp như sau:

<b:if cond='ĐIỀU_KIỆN'>
</b:if>

Thẻ bất đầu là thẻ <b:if>, và đều phải có thuộc tính cond trong mỗi thẻ. Thẻ cond là viết tắt của Condition có nghĩa là điều kiện, và thuộc tính này sẽ nhận giá trị điều kiện của chúng ta. Mỗi thẻ bắt đầu <b:if> được kết thúc bởi thẻ đóng </b:if>.

Danh sách các điều kiện của Blogger
1. Trang Index
Trang Index là tổng hợp gồm các trang như trang chủ, trang hiển thị nhãn, và trang archive.

<b:if cond='data:blog.pageType == "index"'>

2. Trang bài viết
<b:if cond='data:blog.pageType == "item"'>

3. Trang tĩnh hay còn gọi là Trang trống
<b:if cond='data:blog.pageType == "static_page"'>

4. Trang Archive
<b:if cond='data:blog.pageType == "archive"'>

5. Trang chủ
<b:if cond='data:blog.url == data:blog.homepageUrl'>

6. Trang có URL tùy chọn
<b:if cond='data:blog.url == "ĐẶT_URL_VÀO_ĐÂY"'>

7. Trang bài viết và trang tĩnh
<b:if cond='data:blog.url == data:post.url'>

8. Trang xem nhãn
<b:if cond='data:blog.searchLabel'>

9. Bài viết đầu tiên
<b:if cond='data:post.isFirstPost'>

Sử dụng câu điều kiện
Nội dung cần sử dụng sẽ được đặt vào giữa 2 thẻ <b:if cond…> và </b:if>  ví dụ:

<b:if cond='data:blog.pageType == "item"'>
Nội dung (để thực thi nếu điều kiện đúng)
</b:if>

mình cũng sử dụng các  này để chèn quảng cáo vào bài viết ở bài trước:

Nếu bạn muốn thực hiện một nội dung khác nếu điều kiện sai, bạn cần thêm thẻ vào ví dụ:

<b:if cond='data:blog.pageType == "item"'>
Nội dung 1 (để thực thi nếu điều kiện đúng)
<b:else/>
Nội dung 2 (để thực thi nếu điều kiện sai)
</b:if>

Ở tất cả những gì mình đã hướng dẫn ở trên đều sử dụng phép so sánh bằng == nếu bạn muốn so sánh không bằng hay còn gọi là khác thì bạn có thể thay đổi == thành != ví  dụ:

<b:if cond='data:blog.pageType != "item"'>
Nội dung (để thực thi nếu điều kiện đúng)
</b:if>

Nội dung trên sẽ thực hiện ở tất cả các trang khác trang bài viết.

Như vậy mình đã hướng dẫn các bạn đầy đủ cách sử dụng thẻ điều của của Blogger. Hi vọng thủ thuật này giúp bạn có thêm ý tưởng sáng tạo cho blog của mình!


"nguồn bài viết từ KslZone.NET".
Đọc Bài

HIỆU ỨNG BÔNG TUYẾT RƠI DÂN DỊP GIÁNG SINH CHO BLOGGER

Chắc hẳn chúng ta không ít thì nhiều cũng cảm thấy náo nức hơn, vì noel đã đến gần rồi. Do đó việc thêm một ít không khí noel vào blog của mình sẽ khiến cho người đọc cảm thấy hứng khởi hơn khi đọc blog của bạn. Dưới đây mình xin chia sẽ với các bạn hiệu ứng bông tuyết rơi khía đẹp mà mình lấy từ spiceupyourblog về đây để chia sẻ với các bạn.

Thêm hiệu ứng bông tuyết rơi vào Blogger
1. Đăng nhập vào Blogger >> Mẫu >> Chỉnh sửa HTML

Hiệu ứng bông tuyết rơi dân dịp Giáng Sinh cho Blogger



2. Tìm đến thẻ </head> và thêm đoạn code sau vào bên trên

<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js'/>
<script src='http://yourjavascript.com/61532113121/new-snofall.js'/>
<script>
$(document).ready( function(){
$.fn.snow({ minSize: 10, maxSize: 50, newOn: 400, flakeColor: '#ffffff' });
});
</script>

Tại đoạn mã trên khu vực mình tô màu đỏ các bạn có thể thay đổi sau cho phù hợp vơi blog của bạn:
minSize: 10, - Kích thước bé nhất của bông tuyết.
maxSize: 50, - Kích thước lớn nhất của bông tuyết.
newOn: 400, - Tần suất rơi của bông tuyết, nếu tăng lên sẽ tăng số lượng tuyết rơi và ngược lại.
flakeColor: '#ffffff' - Thuộc tính màu của tuyết rơi.

Sau khi thiết lập thành công thì bông tuyết đã bắt đầu rơi và không khí noel đang trản về trên website của bạn.


"nguồn bài viết từ KslZone.NET".
Đọc Bài

Thứ Hai, 29 tháng 9, 2014

HƯỚNG DẪN BỎ CHỌN CHỮ TRONG BLOGGER

Hướng dẫn bỏ chọn chữ trong Blogger

Là một blogger thì chắc chắn một điều là không một ai muốn bài viết do chính mình vắt não ra viết bị sao chép (copy) bởi người khác. Việc bài viết bị sao chép (copy) thật rất khó chịu bởi vì thời gian và công sức của mình đầu tư vào như đã bị người khác cướp mất. Do đó thiết nghĩ phải có cách gì đó để hạn chế lại tình trạng này, ở bài viết này mình xin hướng dẫn thủ thuật nhỏ dùng css để không cho người khác bôi chọn chữ để sao chép (copy) ở một đoạn văn bản, hoặc một phần của website.

Bước 1: Chèn CSS
Vào Mẫu » Chỉnh sửa HTML kiếm đến thẻ ]]></b:skin> và thêm đoạn CSS sau
.bochonchu{
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
Bước 2: Sử dụng CSS
Đối với một đoạn văn bản các bạn chỉ cần dùng thuộc tính class="bochonchu" thế là thành công. Ví dụ:
Bạn không thể chọn chữ ở đây 
Đối với những bạn muốn bỏ hoàn toàn không cho người khác chọn chữ ở khung bài viết blogger hoặc những chõ khác v.v.. các bạn cũng chỉ cần thêm thuộc tính class="bochonchu" hoặc chèn thẳng đoạn CSS sau vào thuộc tính mà các bạn muốn bỏ qua.
-webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;

Bằng một thủ thuật nhỏ bằng CSS, chúng ta sẽ hạn chế được một phần nhỏ những người có ý đồ xấu tò mò dòm ngó bài viết của chúng ta. Thật tình mà nói những người copy bài viết của người khác thì sẽ làm giảm thứ hạng website của họ trên Google, do đó hãy tự tay viết những bài viết thật hay để người dùng chú ý hơn là copy bài của người khác. Nếu gặp vấn đề gì về sử dụng đoạn css trên các bạn có thể để lại nhận xét phía dưới mình sẽ hỗ trợ các bạn. Chúc bạn thành công!


"nguồn bài viết từ KslZone.NET".
Đọc Bài

ẨN NHỮNG THỨ KHÔNG MONG MUỐN VỚI KHÁCH TRONG BLOGGER

Ẩn những thứ không mong muốn với khách trong Blogger
Có khi nào vì một lý do nào đó, bạn không muốn khách truy cập nhìn thấy một số thứ trên website/blog của mình chưa? Ví dụ như một số widget như thống kê, hay một số thứ bạn đang thiết kế dang dở trên website mà bạn chỉ muốn bạn có thể nhìn thấy. Do dó, tại bài viết này mình muốn chia sẻ với các bạn một thủ thuật nho nhỏ giúp các bạn ẩn những thứ không mong muốn với khách trong Blogger.

ẩn những thứ không mong muốn với khách trong blogger

Ẩn những thứ không mong muốn với khách trong Blogger
Để ẩn những đoạn mã mà bạn không mong muốn nó được hiển thị với khách, bạn hãy đặt nó trong đoạn mã phía dưới

<span class='item-control blog-admin'>
NỘI DUNG BẠN MUỐN ẨN VỚI KHÁCH TRUY CẬP
</span>

thật đơn giản phải không, đoạn mã này thực ra được Google cho vào Blogger từ rất lâu rồi, nó dùng để ẩn những cái như nút chỉnh sửa nhanh bài viết cho quản trị/tác giả của blog, bỗng nhiên mình có một vài ý tưởng cần sử dụng đến nó, và mình chia sẽ ngay với các bạn.

Thủ thuật này mình cảm thấy rất hưu ích với mình và mình cũng rất mong rằng thủ thuật nho nhỏ này có ích cho các bạn. Chúc bạn thành công!

"nguồn bài viết từ KslZone.NET".

Đọc Bài

AUTO READMORE VỚI THUMBNAIL KHÔNG SỬ DỤNG JAVASCRIPT CHO BLOGGER

Trước đây mình có share một đoạn script duy nhất để giúp các bạn tạo auto readmore với thumbnail, ưu điểm chỉ cần thay thế và chèn một lần duy nhất, nhưng nếu bạn để ý thì nó làm tốc độ tải trang chậm đi một ít vì nó xử lý lại thông tin được đưa ra ngoài trang chủ. Hôm nay, mình xin chia sẻ với các bạn cách tạo auto readmore với thumbnail hoàn toàn không sử dụng javascript của bác Duy Phạm, giúp blog bạn tải nhanh hơn rất nhiều.

Auto readmore với thumbnail không sử dụng javascript cho Blogger


Mình cũng đang sử dụng nó trên một số blog mà mình đang làm bạn có thể xem qua:


Auto readmore không sử dụng javascript cho Blogger
Ưu điểm của thủ thuật này là sử dụng những thứ có sẵn của Blogger giúp tốc độ tải nhanh hơn, nhược điểm thì không để kiểm soát được số lượng ký tự lấy ra từ bài viết, ảnh thumbnail hơi bé (mình sẻ chia sẻ cách khác phục này tại bai khác), và nếu bạn muốn hiểu có thể tham khảo qua các bài viết về thẻ lập trình của mình.

Tạo auto readmore với thumbnail
Bước 1: Đăng nhập vào Blogger >> Mẫu >> Chỉnh sửa HTML

Auto readmore với thumbnail không sử dụng javascript cho Blogger


Bước 2: Các bạn tìm và thay thế toàn bộ thẻ sau

<data:post.body/>

bằng một trong những đoạn mã sau:

1. Auto readmore với hình ảnh:

<b:if cond='data:blog.pageType != &quot;item&quot;'>
 <b:if cond='data:blog.pageType != &quot;static_page&quot;'>
  <div>
   <b:if cond='data:post.thumbnailUrl'>
    <img class='post-thumbnail' expr:alt='data:post.title' expr:src='data:post.thumbnailUrl' width='72px' height='72px'/>
   </b:if>
   <data:post.snippet/>
  </div>
  <div class='jump-link'>
   <a expr:href='data:post.url' expr:title='data:post.title'><data:post.jumpText/></a>
  </div>
 <b:else/>
  <data:post.body/>
 </b:if>
<b:else/>
 <data:post.body/>
</b:if>

2. Auto readmore với hình ảnh và hiển thị ảnh mặc định cho bài viết không có ảnh:

<b:if cond='data:blog.pageType != &quot;item&quot;'>
 <b:if cond='data:blog.pageType != &quot;static_page&quot;'>
  <div>
   <b:if cond='data:post.thumbnailUrl'>
    <img class='post-thumbnail' expr:alt='data:post.title' expr:src='data:post.thumbnailUrl' width='72px' height='72px'/>
   <b:else/>
    <img class='post-thumbnail' alt='no image' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdOZLVA5Uv_Ba1RO7wDU7gwsA4WYnhOWU9fE4LJmuB3ewbl5Q7fhj_hkqAD_nRQ28S12Oyfp3EDCLtnhODj-4BsLK42FlajZZ7KgXxy8sn6OpGIFPT86dv0yHl2HJMGD25SjwIiyzae8xd//' width='72px' height='72px'/>
   </b:if>
   <data:post.snippet/>
  </div>
  <div class='jump-link'>
   <a expr:href='data:post.url' expr:title='data:post.title'><data:post.jumpText/></a>
  </div>
 <b:else/>
  <data:post.body/>
 </b:if>
<b:else/>
 <data:post.body/>
</b:if>

3. Auto readmore với hình ảnh. Không readmore với bài viết mới nhất:

<b:if cond='data:blog.pageType != &quot;item&quot;'>
 <b:if cond='data:blog.pageType != &quot;static_page&quot;'>
  <b:if cond='data:blog.url == data:blog.homepageUrl'>
   <b:if cond='data:post.isFirstPost == &quot;true&quot;'>
    <data:post.body/>
     <b:if cond='data:post.hasJumpLink'>
      <div class='jump-link'>
       <a expr:href='data:post.url + &quot;#more&quot;' expr:title='data:post.title'><data:post.jumpText/></a> 
      </div>
     </b:if>
   <b:else/>
    <div>
     <b:if cond='data:post.thumbnailUrl'>
      <img class='post-thumbnail' expr:alt='data:post.title' expr:src='data:post.thumbnailUrl' width='72px' height='72px'/>
     </b:if>
     <data:post.snippet/>
    </div>
    <div class='jump-link'>
     <a expr:href='data:post.url' expr:title='data:post.title'><data:post.jumpText/></a>
    </div>
   </b:if>
  <b:else/>
   <div>
    <b:if cond='data:post.thumbnailUrl'>
     <img class='post-thumbnail' expr:alt='data:post.title' expr:src='data:post.thumbnailUrl' width='72px' height='72px'/>
    </b:if>
    <data:post.snippet/>
   </div>
   <div class='jump-link'>
    <a expr:href='data:post.url' expr:title='data:post.title'><data:post.jumpText/></a>
   </div>
  </b:if>
 <b:else/>
  <data:post.body/>
 </b:if>
<b:else/>
 <data:post.body/>
</b:if>

4. Auto readmore với hình ảnh và hiển thị ảnh mặc định cho bài viết không có ảnh. Không readmore với bài viết mới nhất:

<b:if cond='data:blog.pageType != &quot;item&quot;'>
 <b:if cond='data:blog.pageType != &quot;static_page&quot;'>
  <b:if cond='data:blog.url == data:blog.homepageUrl'>
   <b:if cond='data:post.isFirstPost == &quot;true&quot;'>
    <data:post.body/>
     <b:if cond='data:post.hasJumpLink'>
      <div class='jump-link'>
       <a expr:href='data:post.url + &quot;#more&quot;' expr:title='data:post.title'><data:post.jumpText/></a> 
      </div>
     </b:if>
   <b:else/>
    <div>
     <b:if cond='data:post.thumbnailUrl'>
      <img class='post-thumbnail' expr:alt='data:post.title' expr:src='data:post.thumbnailUrl' width='72px' height='72px'/>
     <b:else/>
      <img class='post-thumbnail' alt='no image' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdOZLVA5Uv_Ba1RO7wDU7gwsA4WYnhOWU9fE4LJmuB3ewbl5Q7fhj_hkqAD_nRQ28S12Oyfp3EDCLtnhODj-4BsLK42FlajZZ7KgXxy8sn6OpGIFPT86dv0yHl2HJMGD25SjwIiyzae8xd//' width='72px' height='72px'/>
     </b:if>
     <data:post.snippet/>
    </div>
    <div class='jump-link'>
     <a expr:href='data:post.url' expr:title='data:post.title'><data:post.jumpText/></a>
    </div>
   </b:if>
  <b:else/>
   <div>
    <b:if cond='data:post.thumbnailUrl'>
     <img class='post-thumbnail' expr:alt='data:post.title' expr:src='data:post.thumbnailUrl' width='72px' height='72px'/>
    <b:else/>
     <img class='post-thumbnail' alt='no image' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdOZLVA5Uv_Ba1RO7wDU7gwsA4WYnhOWU9fE4LJmuB3ewbl5Q7fhj_hkqAD_nRQ28S12Oyfp3EDCLtnhODj-4BsLK42FlajZZ7KgXxy8sn6OpGIFPT86dv0yHl2HJMGD25SjwIiyzae8xd//' width='72px' height='72px'/>
    </b:if>
    <data:post.snippet/>
   </div>
   <div class='jump-link'>
    <a expr:href='data:post.url' expr:title='data:post.title'><data:post.jumpText/></a>
   </div>
  </b:if>
 <b:else/>
  <data:post.body/>
 </b:if>
<b:else/>
 <data:post.body/>
</b:if>

Chọn vị trí của ảnh thumbnail
Bước 1: Đăng nhập vào Blogger >> Mẫu >> Chỉnh sửa HTML

Auto readmore với thumbnail không sử dụng javascript cho Blogger

Bước 2: tìm đến thẻ ]]></b:skin> và thêm một trong 2 đoạn CSS sau vào bên trên

1. Hiển thị hình ảnh bên trái:

.post-thumbnail{float:left;margin-right:20px}

2. Hiển thị hình ảnh bên phải:

.post-thumbnail{float:right;margin-left:20px}

Lời kết
Do trong bài thẻ data thiếu nên mình giải thích thêm, thẻ <data:post.snippet/> của Blogger là thẻ lấy ra 140 ký tự từ bài viết, thẻ này thường được thấy trong widget "Bài đăng phổ biến". Duy Phạm là một trong những cao thủ về Blogger, anh ấy chia sẻ rất nhiều thủ thuật độc và lạ, và  là một trong những nguồn cảm hứng để mình làm ra blog này :)

"nguồn bài viết từ KslZone.NET".
Đọc Bài

BÀI VIẾT MỚI NHẤT DẠNG HÌNH ẢNH CHO BLOGGER

Theo kinh nghiệm cá nhân thì khi chúng ta bắt đầu tạo dụng một website/blog thì việc xây dụng lưu lượng truy cập khá là khó khăn. Một trong những nguồn lưu lượng phổ biến nhất thì lại thường đến từ Google. Như bạn cũng biết thì chúng ta phải cung cấp những điều mà họ cần thì họ mới đến được website qua Google được.

Nhưng vấn đề ở đây thì họ chỉ ghé qua trang đó tìm hiểu nội dung đó rồi họ bỏ đi cho dò họ tìm hoặc không tìn được thứ mình cần, chính vì thế mà các hack/mod như "Bài viết liên quan", "Bài viết phổ biến",... ra đời giúp tối ưu nội dung đến cho khách truy cập.

Bài viết mới nhất dạng hình ảnh cho Blogger
Bấm vào ảnh để xem demo

Hôm nay, bài viết này mình sẽ hướng dẫn các bạn thêm một thứ nữa "bài viết mới nhất" dạng hình ảnh cho website/blog của bạn nhằm giúp bạn cung cấp nội dung mới nhất của website/blog của bạn đến với người dùng để họ có thể ở lại lâu hơn trên website của chúng ta.

Bài viết mới nhất dạng hình ảnh cho Blogger
1. Đăng nhập vào Blogger >> Mẫu >> Chỉnh sửa HTML

Bài viết mới nhất dạng hình ảnh cho Blogger


2. Tìm đến thẻ </head> và thêm đoạn Javascript sau vào bên trên

Bài viết mới nhất dạng hình ảnh cho Blogger

<script>
// Blogger Recent Posts Gallery by Bloggersentral.com
// Tutorial at http://www.bloggersentral.com/2013/05/recent-posts-image-gallery-for-blogger.html
// Free to use or share, but please keep this notice intact.
//<![CDATA[
function bsrpGallery(root) {
    var entries = root.feed.entry || [];
    var html = ['<div class="bsrp-gallery nopin" title="Get this from BloggerSentral.com">'];
    for (var i = 0; i < entries.length; ++i) {
        var post = entries[i];
        var postTitle = post.title.$t;
        var orgImgUrl = post.media$thumbnail ? post.media$thumbnail.url : 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnv0407pJ6s1mHZfDY4vA-BxlLJORstSGTnm_4G2M9uhlYNV0fAS2ukAk0rSHvx5UJt8EoPHqWE2uHl5nNPMBDBgpw4o9YpPtIKxWfmypNttB_7Y8vEC7nL8YbwZSYtB74KFhhBVayaHd3/s72-c/default+image.png';
        var newImgUrl = orgImgUrl.replace('s72-c', 's' + bsrpg_thumbSize + '-c');
        var links = post.link || [];
        for (var j = 0; j < links.length; ++j) {
            if (links[j].rel == 'alternate') break;
        }
        var postUrl = links[j].href;
        var imgTag = '<img src="' + newImgUrl + '" width="' + bsrpg_thumbSize + '" height="' + bsrpg_thumbSize + '"/>';
        var pTitle = bsrpg_showTitle ? '<span class="ptitle">' + postTitle + '</span>' : '';
        var item = '<a href="' + postUrl + '" target="_blank" title="' + postTitle + '">' + imgTag + pTitle + '</a>';
        html.push('<div class="bs-item">', item, '</div>');
    }
    html.push('</div>');
    document.write(html.join(""));
}
//]]>
</script>
3. Tiếp tục tìm đến thẻ ]]></b:skin> và thêm đoạn CSS sau vào bên trên

Bài viết mới nhất dạng hình ảnh cho Blogger

/* BloggerSentral Recent Posts Image Gallery CSS Start */
.bsrp-gallery {padding:10px; clear:both;}
.bsrp-gallery:after {content: "";display: table;clear: both;}
.bsrp-gallery .bs-item a {position: relative;float:left;margin: 0 15px 15px 0 !important;text-decoration:none;}
.bsrp-gallery .bs-item .ptitle {background: rgba(0, 0, 0, 0.5); background: #7f7f7f\9; display: block; clear: left; font-size: 11px; line-height:1.3em; height: 2.6em; position: absolute; text-align: left; bottom: 10%; color:#fff; padding:2px 5px; word-wrap: break-word; overflow:hidden;}
.bsrp-gallery a img {background: #eee; float: left; padding: 5px; box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.5); -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.5); transition: background-color 0.4s; -webkit-transition: background-color 0.4s; -moz-transition: background-color 0.4s;}
.bsrp-gallery a:hover img {background: #ee7e22;}
/* BloggerSentral Recent Posts Image Gallery CSS End */
4. Bạn sử dụng đoạn mã sau để chèn vào vị trí bạn muốn đặt (có thể sử dụng tại widget HTML hoặc bất cứ đâu trên trang của bạn)
<script>
  var bsrpg_thumbSize = 150;
  var bsrpg_showTitle = true;
</script>
<script src="/feeds/posts/summary?max-results=8&alt=json-in-script&callback=bsrpGallery"></script>
Ở đoạn mã này bạn có thể tùy chỉnh các thông số sau:
  • bsrpg_thumbSize: Kích thước của ảnh (hiện tại là 150x150px)
  • bsrpg_showTitle: Ẩn hiện tên bài viết (true để hiện, false để ẩn)
  • max-results: Số lượng bài viết xuất hiện

5. Lưu lại giao diện hiện tại và tận hưởng.

Như vậy bạn đã thêm xong "Bài viết mới nhất" dạng hình ảnh cho blog của bạn. Mong ràng nó giúp bạn, và người dùng trên website của bạn tìm được những thông tin hữu ích và ở lại đó lâu hơn. Nếu có thắc mắc xin để lại nhận xét phía dưới!


"nguồn bài viết từ KslZone.NET".

Đọc Bài

ĐÁNH SỐ THỨ TỰ VÀO NHẬN XÉT - BLOGGER

Có bao giờ bạn nghĩ đến việc đánh số thứ tự cho các nhận xét trên website của mình chưa. Việc đánh số thứ tự cho nhận xét giúp chúng ta và khách truy cập dễ dàng xác định số lượng xét tại bài viết hơn, và cũng giúp khách một phần nào đó dễ nhìn hơn khi số lượng nhận xét quá lớn. Do đó hôm nay mình sẽ hướng dẫn các bạn đánh số thứ tự vào nhận xét tại Blogger.

Đánh số thứ tự vào nhận xét - Blogger


Đánh số thứ tự vào nhận xét - Blogger
1. Đăng nhập vào Blogger >> Mẫu >> Chỉnh sửa HTML

Đánh số thứ tự vào nhận xét - Blogger


2. Tìm đến thẻ ]]></b:skin> và thêm đoạn CSS sau vào bên trên

Đánh số thứ tự vào nhận xét - Blogger


.comment-thread ol {
counter-reset: countcomments;
}
.comment-thread li:before {
content: counter(countcomments,decimal);
counter-increment: countcomments;
float: right;
font-size: 22px;
color: #555555;
padding: 10px;
padding-top: 3px;
margin-top: 7px;
margin-left: 10px;
position: relative;
z-index: 10;
}
.comment-thread ol ol {
counter-reset: contrebasse;
}
.comment-thread li li:before {
content: counter(countcomments,decimal) "." counter(contrebasse,lower-latin);
counter-increment: contrebasse;
float: right;
font-size: 18px;
color: #666666;
}

3. Lưu lại template và bạn đã thành công!

Bạn có thể thấy ở trên mình đã sử dụng css để đánh số thứ tự vào nhận xét, do đó bạn có thể thay đổi kích thước font chữ, màu,... tùy ý tại phần css trên nếu cần. Do thủ thuật này chỉ sử dụng css cho nên tốc độ đánh số thứ tự và xuất hiện là rất lẹ, hầu như bạn và khách truy cập sẽ không cảm thấy sự thay đổi về tốc độ tải của website của mình.


"nguồn bài viết từ KslZone.NET".
Đọc Bài

AUTO READMORE VỚI THUMBNAIL KHÔNG BÓP MÉO HÌNH ẢNH CHO BLOGGER



Hiện nay, như các bạn đã biết thì có rất nhiều thủ thuật tạo Auto Readmore với Thumbnail được share trên mạng. Nhưng hầu hết đều làm méo hoặc mờ hình ảnh, một số thì không thể tùy chỉnh, công đoạn chèn và sử dụng thì phức tạp. Do đó bài viết này mình muốn được chia sẻ cho các bạn một script tạo Auto Readmore với Thumbnail mà bạn có thể chèn vào blog của mình một cách đơn giản nhất.
Auto readmore với thumbnail không bóp méo hình ảnh cho Blogger

Auto readmore với thumbnail không bóp méo hình ảnh cho Blogger

Bạn chỉ cần chèn script dưới đây của blogxpertise vào trên thẻ </head> và bạn đã hoàn tất:
<b:if cond='data:blog.pageType == "index"'>
<script language='javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js' type='text/javascript'/>
<script type='text/javascript'>//<![CDATA[
/**
this script was written by Confluent Forms LLC http://www.confluentforms.com
for the BlogXpertise website http://www.blogxpertise.com
any updates to this script will be posted to BlogXpertise
please leave this message and give credit where credit is due!
**/

$(document).ready(function() {
 // Chiều rộng tối đa của ảnh thu nhỏ (thumbnail)
 var dimension = 90;
 
 // Số ký tự lấy ra
 var words = 80;
 
 // Ảnh nằm ở đâu left, right, none hay là inherit
 var orientation = "left"; 
 
 // Mặc định 1 là hình vuông, 0 là hình theo tỉ lệ bình thường
 // Lưu ý hình vuông chỉ hoạt động nếu up file tại blog
 var square = 1;
 
 // Kết thúc của đoạn ký tự lấy ra
 var addon = "...";
 
 // Tên nút reademore, nếu không muốn hiện thì để trống
 var readmore = "Đọc tiếp";
 
 // Khoảng cách ảnh đối với xung quanh (margin)
 var margin = "1em";
 
 $('.post-body').each(function(n, wrapper){
  var newContents = "";
  var wrapper = $(wrapper);
  var image = $(wrapper).find('img').first();

   var textContents = wrapper.text().split(' ').slice(0,words).join(' ');
  if (words > 0) textContents += addon;
  wrapper.empty();

   if (image.attr('src')) {
   var imageOriginalHeight = image.height();
   var imageOriginalWidth = image.width();
   var imageParent = $(image).parent();
   wrapper.append(imageParent).append(textContents);
   if (square) {
    image.attr({src : image.attr('src').replace(/s\B\d{3,4}/,'s' + dimension + '-c')});
    image.attr('width',dimension).attr('height',dimension);
   } else {
    image.attr({src : image.attr('src').replace(/s\B\d{3,4}/,'s' + dimension)});
    image.attr('width',dimension);
    var newHeight = (imageOriginalHeight/imageOriginalWidth * dimension).toFixed(0);
    image.attr('height',newHeight);
   }
   imageParent.css('clear','none').css('float',orientation);
   
   switch (orientation) {
    case "left":
     imageParent.css('margin-left',0).css('margin-right',margin);
     break;
    case "right":
     imageParent.css('margin-left',margin).css('margin-right',0);
     break;
    default:
     imageParent.css('margin-left',margin).css('margin-right',margin);
     break;
   }
  } else wrapper.append(textContents);
  if (readmore) {
   var link = wrapper.parent().find('h3 a').attr('href');
   wrapper.append('<br /><a href="' + link + '">' + readmore + '</a>');
  } 
  
  wrapper.append('<hr>');
  $('hr').css('width','100%').css('background-color','transparent').css('border-width',0);
 });
 
});
//]]></script>
</b:if>
Và như các bạn đã thấy chỉ cần chèn đoạn script trên vào trên thẻ không cần thay đổi bất cứ gì trong template của Blogger và bạn đã có riêng cho mình auto readmore với thumbnail một cách đơn giản, đặc biệt là hình ảnh không bị biến dạng.

Một lưu ý nhỏ là đoạn script này khá là dài nên nó sẽ làm cho tốc độ tải trang của blog của bạn giảm đi đáng kể, hiện tại trên blog của mình có khá nhiều bài viết hướng dẫn các bạn có thể lấy ra một ảnh cắt và resize ảnh đúng kích thước mà bạn mong muốn, bạn có thể kết hợp chúng với Auto Readmore không sử dụng javascript để đạt được tốc độ tối ưu cho blog của bạn.

"nguồn bài viết từ KslZone.NET".
Đọc Bài

BÀI ĐĂNG PHỔ BIẾN CHUẨN HTML5 CHO BLOGGER

Cách thức để tối ưu cho một Blogger template đạt chuẩn HTML5 thì khá là lằng nhằng. Đặc biệt ngoài việc chỉnh sửa lại cấu trúc bên trong blog, chúng ta còn phải chỉnh sửa luôn cả những widget mặc định của nó. Trước đây mình đã có một bài viết hướng dẫn các bạn cách để chỉnh sửa widget Tiêu đề để phần logo blog đạt chuẩn HTML5, và hôm nay mình xin hướng dẫn các bạn chỉnh một widget hầu như có trên mọi blog "bài đăng phổ biến" đạt chuẩn HTML5.

Bài đăng phổ biến chuẩn HTML5 cho Blogger


Bài đăng phổ biến chuẩn HTML5 cho Blogger

Cũng như bài viết hướng dẫn khắc phục logo không đạt chuẩn, vấn đề nằm ở thẻ img chứa những thuộc tính không cần thiết, đây là đoạn mã được báo lỗi.

<img alt='' border='0' expr:height='data:thumbnailSize' expr:src='data:post.thumbnail' expr:width='data:thumbnailSize'/>

Chuẩn HTML5 không chấp nhận những thuộc tính có thể căn chỉnh bằng css. Do đó để khắc phục, bạn chỉ cần xóa những thuộc tính đó và sử dụng css để căn chỉnh lại. Để tránh phiền hà cho các bạn mình đã sẵn decode lại, bạn chỉ cần thay thế đoạn mã phía trên bằng đoạn mã ở đây.

>
<img expr:alt='data:post.title' expr:src='data:post.thumbnail' expr:style='&quot;width:&quot; + data:thumbnailSize + &quot;px;height:&quot; + data:thumbnailSize + &quot;px;&quot; + &quot;border:0&quot;'/>

như bạn thấy mình đã xóa bỏ những đoạn màm mình đã đánh dấu ở trên và dồn chúng vào thuộc tính style mình tự viết. Mình còn thêm cả tiêu đề bài viết vào thuộc tính alt tối ưu hơn cho SEO so với đoạn mã mặc định chỉ là ký tự rỗng.

Lời kết
Sau khi hoàn thành thì bạn đã làm cho widget bài đăng phổ biến trên blog của bạn đạt chuẩn HTML5, những bạn nào muốn biết mình làm thế nào để có thể đưa chúng vào trong thuộc tính style để mốt tự chỉnh sửa thì có thể tham khảo qua các bài viết thể ngôn ngữ lập trính Blogger trên blog của mình.

"nguồn bài viết từ KslZone.NET".
Đọc Bài

BÀI VIẾT LIÊN QUAN CHUẨN HTML5 CHO BLOGGER

Tiếp tục với chuỗi bài viết về các tiện ích chuẩn HTML5 cho một website, và hôm nay là một tiện ích chuẩn cho Blogger hay dân chúng thường gọi là Blogspot. Tiện ích chuẩn HTML5 lần này là bài viết liên quan, về tác dụng của nó thì chắc khỏi cần phải nói nó làm gì rồi, làm cho khách truy cập có thể cập nhật nhiều thông tin hưu ích hơn mà họ có thể cũng đang tìm kiếm.

Bài viết liên quan chuẩn HTML5 cho Blogger

Về tiện ích mà mình tìm được và chia sẻ lần này có hơi đáng tiếc là nó chỉ có tiêu đề thôi chứ không có ảnh thu nhỏ cho các bài viết liên quan. Nhưng nghĩ lại thì có thumbnail cũng không có thay đổi gì nhiều, cái mà để quyết định người dùng dó đọc bài viết hay không thường chỉ do tiêu đề mà thôi.

Bài viết liên quan chuẩn HTML5 cho Blogger
Tiện ích này là một tiện ích mình lấy từ một trong những blog của người Indonesia, phải nói rằng họ rất chi là chuộng sử dụng HTML5 cũng như Blogger, khá nhiều tiện ích hay đều xuất phát từ đó.

Để thêm bài viết liên quan chuẩn HTML5 vào blog của bạn các bạn hay làm theo các bước sau đây. Vào chỉnh sửa HTML cho blog mà bạn muốn thêm vào, chèn đoạn css sau đây lên trên thẻ ]]></b:skin>

#related-post {background:none;width:100%;margin-top:35px;margin-bottom:10px;padding:5px 0 10px 0px}
#related-post h4{font-size:150%;text-transform:uppercase;margin:0 0 15px;padding:0;font-weight:normal}
#related-post li{color:#2c3e50;text-indent:0;line-height:1.6em;margin:0 20px;}
#related-post .widget{margin:0;padding:0}
#related-post ul{list-disc;margin:0;padding:0}
đoạn css này bạn có tinh chỉnh lại theo ý thích của bạn.

Tiếp tục chèn đoạn mã sau đây vào vị trí mà bạn muốn hiện bài viết liên quan, thông thường nếu bạn muốn chèn ở cuối bài viết thì tìm đến đoạn mã sau

<div class='post-footer-line post-footer-line-1'>

và chèn ở dưới nó

<!-- Bài Viết Liên Quan -->
<b:if cond='data:blog.pageType == &quot;item&quot;'>
  <div id='related-post' class='related-post'/>
  <script type='text/javascript'>
  var labelArray = [<b:if cond='data:post.labels'><b:loop values='data:post.labels' var='label'>
          &quot;<data:label.name/>&quot;<b:if cond='data:label.isLast != &quot;true&quot;'>,</b:if>
      </b:loop></b:if>];
  var relatedPostConfig = {
      homePage: &quot;<data:blog.homepageUrl/>&quot;,
      widgetTitle: &quot;&lt;h4&gt;Bài liên quan:&lt;/h4&gt;&quot;,
      numPosts: 5,
      titleLength: &quot;auto&quot;,
      containerId: &quot;related-post&quot;,
      newTabLink: false,
      widgetStyle: 1,
      callBack: function() {}
  };
  </script>
  <script type="text/javascript">
//<![CDATA[
/*! KHÔNG CHỈNH SỬA ĐOẠN MÃ NÀY - Related Post Widget for Blogger by Taufik Nurrohman => http://gplus.to/tovic */
var randomRelatedIndex,showRelatedPost;(function(n,m,k){var d={widgetTitle:"<h4>Related Post:</h4>",widgetStyle:1,homePage:"http://blog.kangismet.net",numPosts:7,summaryLength:370,titleLength:"auto",thumbnailSize:72,noImage:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAA3NCSVQICAjb4U/gAAAADElEQVQImWOor68HAAL+AX7vOF2TAAAAAElFTkSuQmCC",containerId:"related-post",newTabLink:false,moreText:"Baca Selengkapnya",callBack:function(){}};for(var f in relatedPostConfig){d[f]=(relatedPostConfig[f]=="undefined")?d[f]:relatedPostConfig[f]}var j=function(a){var b=m.createElement("script");b.type="text/javascript";b.src=a;k.appendChild(b)},o=function(b,a){return Math.floor(Math.random()*(a-b+1))+b},l=function(a){var p=a.length,c,b;if(p===0){return false}while(--p){c=Math.floor(Math.random()*(p+1));b=a[p];a[p]=a[c];a[c]=b}return a},e=(typeof labelArray=="object"&&labelArray.length>0)?"/-/"+l(labelArray)[0]:"",h=function(b){var c=b.feed.openSearch$totalResults.$t-d.numPosts,a=o(1,(c>0?c:1));j(d.homePage.replace(/\/$/,"")+"/feeds/posts/summary"+e+"?alt=json-in-script&orderby=updated&start-index="+a+"&max-results="+d.numPosts+"&callback=showRelatedPost")},g=function(z){var s=document.getElementById(d.containerId),x=l(z.feed.entry),A=d.widgetStyle,c=d.widgetTitle+'<ul class="related-post-style-'+A+'">',b=d.newTabLink?' target="_blank"':"",y='<span style="display:block;clear:both;"></span>',v,t,w,r,u;if(!s){return}for(var q=0;q<d.numPosts;q++){if(q==x.length){break}t=x[q].title.$t;w=(d.titleLength!=="auto"&&d.titleLength<t.length)?t.substring(0,d.titleLength)+"&hellip;":t;r=("media$thumbnail" in x[q]&&d.thumbnailSize!==false)?x[q].media$thumbnail.url.replace(/\/s[0-9]+(\-c)?/,"/s"+d.thumbnailSize+"-c"):d.noImage;u=("summary" in x[q]&&d.summaryLength>0)?x[q].summary.$t.replace(/<br ?\/?>/g," ").replace(/<.*?>/g,"").replace(/[<>]/g,"").substring(0,d.summaryLength)+"&hellip;":"";for(var p=0,a=x[q].link.length;p<a;p++){v=(x[q].link[p].rel=="alternate")?x[q].link[p].href:"#"}if(A==2){c+='<li><img alt="" class="related-post-item-thumbnail" src="'+r+'" width="'+d.thumbnailSize+'" height="'+d.thumbnailSize+'"><a class="related-post-item-title" title="'+t+'" href="'+v+'"'+b+">"+w+'</a><span class="related-post-item-summary"><span class="related-post-item-summary-text">'+u+'</span> <a href="'+v+'" class="related-post-item-more"'+b+">"+d.moreText+"</a></span>"+y+"</li>"}else{if(A==3||A==4){c+='<li class="related-post-item" tabindex="0"><a class="related-post-item-title" href="'+v+'"'+b+'><img alt="" class="related-post-item-thumbnail" src="'+r+'" width="'+d.thumbnailSize+'" height="'+d.thumbnailSize+'"></a><div class="related-post-item-tooltip"><a class="related-post-item-title" title="'+t+'" href="'+v+'"'+b+">"+w+"</a></div>"+y+"</li>"}else{if(A==5){c+='<li class="related-post-item" tabindex="0"><a class="related-post-item-wrapper" href="'+v+'" title="'+t+'"'+b+'><img alt="" class="related-post-item-thumbnail" src="'+r+'" width="'+d.thumbnailSize+'" height="'+d.thumbnailSize+'"><span class="related-post-item-tooltip">'+w+"</span></a>"+y+"</li>"}else{if(A==6){c+='<li><a class="related-post-item-title" title="'+t+'" href="'+v+'"'+b+">"+w+'</a><div class="related-post-item-tooltip"><img alt="" class="related-post-item-thumbnail" src="'+r+'" width="'+d.thumbnailSize+'" height="'+d.thumbnailSize+'"><span class="related-post-item-summary"><span class="related-post-item-summary-text">'+u+"</span></span>"+y+"</div></li>"}else{c+='<li><a title="'+t+'" href="'+v+'"'+b+">"+w+"</a></li>"}}}}}s.innerHTML=c+="</ul>"+y;d.callBack()};randomRelatedIndex=h;showRelatedPost=g;j(d.homePage.replace(/\/$/,"")+"/feeds/posts/summary"+e+"?alt=json-in-script&orderby=updated&max-results=0&callback=randomRelatedIndex")})(window,document,document.getElementsByTagName("head")[0]);
//]]>
</script>
</b:if>
<!-- Kết Thúc Bài Viết Liên Quan -->
Ở đoạn mã bên trên các bạn chỉ cần quan tâm đến 2 thứ là
  • widgetTitle: Tiêu đề của tiện ích này
  • numPosts: Số lượng bài viết
sau khi chỉnh sửa xong thì lưu lại template của bạn và tận hưởng thành quả.

Lời kết
Trong việc chỉnh sửa lại các ký tự "&" thành "&amp;" nếu bạn nào có thử qua thì đối với Blogger, đôi khi có chỉnh sửa thế nào đi nữa nó cũng không thành công khi check chuẩn HTML5. Do đó việc có một Blogger template với những tiện ích như thế này thì đã giúp đỡ khá nhiều trong việc tìm tòi và tối ưu cho blog của mỗi người. Mọi thắc mắc và ý kiến đóng góp về tiện ích bài viết liên quan chuẩn HTML5 này hãy để lại ở dưới.

P/S: Hiện tại nếu bạn nào không thích HTML5 và thích cái đẹp và tính năng thì hay tham khảo qua bài viết liên quan nhiều tùy chỉnh đã chia sẽ tại blog của mình.


"nguồn bài viết từ KslZone.NET".
Đọc Bài

BÀI VIẾT LIÊN QUAN CÓ NGÀY ĐĂNG VÀ SỐ NHẬN XÉT

Mấy ngày qua có một số bạn hỏi qua khung bài viết liên quan và theo dõi qua email ở cuối mỗi bài đăng của mình. Thực chất thì theo dõi qua email là tùy biến lại giao diện của bài này Widget Theo Dõi Qua Email Flat UI Cho Blogger. Còn lại bài viết liên quan hôm nay mình xin chia sẻ nó tại bài viết này. Script bài viết này KHÔNG phải do mình viết ra, mà do tác giả Duy Phạm làm, do có người hỏi nên mạn phép đem về đây chia sẻ với mọi người.

Bài viết liên quan có ngày đăng và số nhận xét

Bài viết liên quan có ngày đăng và số nhận xét
Đăng nhập vào Blogger » Mẫu » Chỉnh sửa HTML

Tìm đến thẻ ]]></b:skin> và thêm đoạn CSS này lên trê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}

Tạo hàm includable để dễ chỉnh sửa hoặc xóa nó đi nếu cần

<b:includable id='relatedPosts' var='post'>
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<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/AVvXsEjdOZLVA5Uv_Ba1RO7wDU7gwsA4WYnhOWU9fE4LJmuB3ewbl5Q7fhj_hkqAD_nRQ28S12Oyfp3EDCLtnhODj-4BsLK42FlajZZ7KgXxy8sn6OpGIFPT86dv0yHl2HJMGD25SjwIiyzae8xd//'};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='&quot;/feeds/posts/default/-/&quot; + data:label.name + &quot;?alt=json-in-script&amp;callback=related_results_labels&quot;' 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>
</b:if>

cuối cùng chèn nó vào vị trí mà bạn muốn v.d.
Ngay sau bài viết
Tìm đến thẻ

<div class='post-footer'>
thêm đoạn mã nhỏ này vào sau đó
<b:include name='relatedPosts' data='post'>
Ra ngoài khung bài viết giống website của mình
Từ thẻ
<div class='post-footer'>
các bạn kéo xuống tìm đến thẻ </b:includable> gần nhất
và thêm đoạn mã này xuống lên trên
<b:include name='relatedPosts' data='post'>

Sau khi hoàn thành lưu lại template và tận hưởng.

Lời kết
Đây là một trong những script mình ưng ý nhất trong việc lấy bài viết liên quan, còn về phần giao diện mình không thể chia sẻ giao diện y chang của mình được vì mình muốn website của mình có cái riêng với mọi người, nên mình sẻ chỉ hướng dẫn các bạn cách thức để làm ra nó. Nếu có thắc mắc bạn có thể để lại ở khung bình luận phía dưới. Bạn cũng có thể xem qua bài viết gốc của Duy Phạm.

"nguồn bài viết từ KslZone.NET".

Đọc Bài