ThichCode.NET: Tạo bài viết liên quan trong Blogspot ThichCode.NET: Tạo bài viết liên quan trong Blogspot
ThichCode.NET

My blog

articles about technology, tricks, programming, ... from practical experience.
Tạo bài viết liên quan trong Blogspot

Tạo bài viết liên quan trong Blogspot

Trong Blogspot, khi xem chi tiết 1 bài viết thì bên dưới bài viết sẽ xuất hiện một số bài viết liên quan nhằm đề đề xuất thu hút người đọc tiếp tục đọc bài viết khác (đây là 1 mẹo trong SEO nhằm duy trì thời gian để ngưởi đọc không thoát website của ta). Sau đây là một đoạn code đơn giản giúp bạn tạo thêm chức năng này.

Trong Blogspot, khi xem chi tiết 1 bài viết thì bên dưới bài viết sẽ xuất hiện một số bài viết liên quan nhằm đề đề xuất thu hút người đọc tiếp tục đọc bài viết khác (đây là 1 mẹo trong SEO nhằm duy trì thời gian để người đọc không thoát website của ta). Sau đây là một đoạn code đơn giản giúp bạn tạo thêm chức năng này.
Đây chỉ là hướng dẫn cơ bản nhất, có gì bạn viết bình luận bên dưới để mình hướng dẫn chi tiết hơn đối với blogspot của bạn. Nếu bạn muốn thay đổi kiểu hiển thị bài viết liên quan (như là hiển thị hình ảnh,...) thì bạn chỉ cần chỉnh sửa CSS và hàm printRelatedLabels trong code Javascript.

Vào Template -> Edit HTML, chọn nơi mà bạn cần hiển thị các bài viết liên quan, sau đó thêm vào các dòng code sau :
1. Code CSS : (dòng đầu tiên là gán CSS chỉ có hiệu lực trong trang chi tiết - trang item)
<b:if cond='data:blog.pageType == "item"'>
    <style type='text/css'>
        #related-posts {
            margin: 15px 5px;
        }
        
        #related-posts h2 {
            font-size: 27px;
            font-weight: normal;
            color: #fff;
            text-shadow: 1px 0px 2px #888;
            margin-bottom: 0.75em;
        }
        
        #related-posts a {
            font-size: 13px;
            color: #888;
            text-transform: capitalize;
        }
        
        #related-posts a:hover {
            text-decoration: none;
            color: #555;
        }
        
        #related-posts ul {
            list-style-type: none;
            margin: 0 0 0px 0;
            padding: 0px;
            text-decoration: none;
            color: #000000;
        }
        
        #related-posts ul {
            list-style-type: none;
            background: #f9f9f9;
            border-left: 5px solid #f2f2f2;
        }
        
        #related-posts li {
            padding: 10px;
            line-height: 1.4;
            border-bottom: 1px dotted #E2E2E2;
        }
        
        #related-posts li:hover {
            background: #F4F4F4;
        }
    </style>
</b:if>
2. Code Javascript:
var relatedpoststitle = "Bài viết liên quan";

var relatedTitles = new Array();
var relatedTitlesNum = 0;
var relatedUrls = new Array();

function related_results_labels(json) {
    for (var i = 0; i < json.feed.entry.length; i++) {
        var entry = json.feed.entry[i];
        relatedTitles[relatedTitlesNum] = entry.title.$t;
        for (var k = 0; k < entry.link.length; k++) {
            if (entry.link[k].rel == 'alternate') {
                relatedUrls[relatedTitlesNum] = entry.link[k].href;
                relatedTitlesNum++;
                break
            }
        }
    }
}

function removeRelatedDuplicates() {
    var tmp = new Array(0);
    var tmp2 = new Array(0);
    for (var i = 0; i < relatedUrls.length; i++) {
        if (!contains(tmp, relatedUrls[i])) {
            tmp.length += 1;
            tmp[tmp.length - 1] = relatedUrls[i];
            tmp2.length += 1;
            tmp2[tmp2.length - 1] = relatedTitles[i]
        }
    }
    relatedTitles = tmp2;
    relatedUrls = tmp
}

function contains(a, e) {
    for (var j = 0; j < a.length; j++) {
        if (a[j] == e) {
            return true
        }
    };
    return false
}

function printRelatedLabels(currenturl) {
    for (var i = 0; i < relatedUrls.length; i++) {
        if (relatedUrls[i] == currenturl) {
            relatedUrls.splice(i, 1);
            relatedTitles.splice(i, 1)
        }
    }
    var r = Math.floor((relatedTitles.length - 1) * Math.random());
    var i = 0;
    if (relatedTitles.length > 1) {
        document.write('<h2>' + relatedpoststitle + '</h2>')
    }
    document.write('<ul>');
    while (i < relatedTitles.length && i < 20 && i < maxresults) {
        document.write('<li><a href="' + relatedUrls[r] + '">' + relatedTitles[r] + '</a></li>');
        if (r < relatedTitles.length - 1) {
            r++
        } else {
            r = 0
        }
        i++
    }
    document.write('</ul>');
    relatedUrls.splice(0, relatedUrls.length);
    relatedTitles.splice(0, relatedTitles.length);
}

3. Code trong Edit HTML: (chú ý: code này chỉ có hiệu lực trong Template của Blogspot)
<b:if cond='data:blog.pageType == "item"'>
    <div id='related-posts'>
        <b:loop values='data:post.labels' var='label'>
            <b:if cond='data:label.isLast != "true"'> </b:if>
            <b:if cond='data:blog.pageType == "item"'>
                <script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&amp;callback=related_results_labels&amp;max-results=6"' type='text/javascript' />
            </b:if>
        </b:loop>
        <script type='text/javascript'>
            var maxresults = 5;
            removeRelatedDuplicates();
            printRelatedLabels( & quot; < data: post.url / > & quot;);
        </script>
    </div>
</b:if>

5 comments:

  1. I like this tutorial, thanks for give sharing this to all together.
    Regards - Blot Tutorial Supporter

    ReplyDelete
  2. Thank you for your interest. If you need help on Blogspot, send me a message.

    ReplyDelete
  3. This is good tutorial, I really love it. thanks for sharing with us. Reade, True Cambodia Travel

    ReplyDelete
  4. Cả ba đoan code trên dán cùng một chỗ hay ccs và java dán riêng hả bạn

    ReplyDelete
    Replies
    1. Dán chung cũng được. Tùy bạn sắp xếp sao cho dễ quản lý.

      Delete

Most read

Latest