ITechPlus | Kiến thức - Thủ thuật - Giải pháp công nghệ

Tiện ích Recent Posts giống iTechPlus.info

31 tháng 3, 2011

Recent Posts là tiện ích giúp hiển thị những bài viết mới nhất theo từng trương mục hoặc cho toàn bộ Blog.

Đây là tiện ích được sử dụng rất phổ biến trên các WebBlog nhằm “hô biến” giao diện đơn giản thuần túy của Blogspot thành giao diện mang phong cách báo chí ( Magazine Template ), giúp Blog bạn trở nên “Pro” hơn trong mắt độc giả.

Tuy nhiên, việc ứng dụng nó cũng gây ra một số “tác dụng phụ” như : ảnh hưởng đến tốc độ load Blog, không tốt cho SEO,…do phải sử dụng JavaScript để lấy dữ liệu từ nguồn cấp Feed. Vì vậy, bạn hãy suy nghĩ thật kỹ trước khi áp dụng nó cho Blog của mình.

Và bắt đầu từ bài viết này, iTechPlus sẽ giới thiệu đến các bạn một số Style để các bạn lựa chọn, bắt đầu với tiện ích Recent Posts giống iTechPlus.info.

Tiện ích Recent Posts giống iTechPlus.info
Hình minh họa

* Cách thực hiện :

1. Vào Thiết kế > Phần tử trang

2. Tạo một widget HTML\JavaScript và dán vào đoạn code bên dưới :

<style type="text/css">
#itechplus-rc {width:260px;margin:0;padding:10px;overflow:hidden;border:1px solid #ccc;background:#fff}
.itechplus-rc h2{background:#39c;color:#fff;line-height:1.6em;margin:0 0 10px;padding:4px 10px;font-weight:bold}
.itechplus-rc ul{list-style:none;margin:0;padding:0}
.itechplus-rc li{text-indent:0;background:url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhac4LJuJXEuY1_8bAUuB-H5j8-uVOXVNupcTSqyUKgz9QdtRxJ8UwyN5EioSOeL6sOONxE98eEfCLW_IFG0d_iKEO-pKybhlPYDj2yu5U8uUyB2v-FF1P9gHTQ1crMHAt38-SvV5BOSJ4T/) no-repeat 0 7px;line-height:1.5em;margin:0;padding:2px 0 2px 15px}
.itechplus-rc h2 a:link, .itechplus-rc h2 a:visited {color:#fff}
</style>
<div id="itechplus-rc" class="itechplus-rc">
<h2><a href="http://www.itechplus.info/search/label/Office?&amp;max-results=8">Tin học văn phòng</a></h2>
<script type='text/javascript'>
numposts = 5; list1 = 1; sumPosts = 168;
</script>
<script type='text/javascript'>
//<![CDATA[
function removeHtmlTag(a, b) {
    var s = a.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)
        }
    }
    s = s.join("");
    s = s.substring(0, b - 1);
    return s
}
function showrecentposts(e) {
    img = new Array();
    for (var i = 0; i < numposts; i++) {
        var f = e.feed.entry[i];
        var g = f.title.$t;
        var h;
        if (i == e.feed.entry.length) break;
        for (var k = 0; k < f.link.length; k++) {
            if (f.link[k].rel == 'alternate') {
                h = f.link[k].href;
                break
            }
        }
        if ("content" in f) {
            var j = f.content.$t
        } else if ("summary" in f) {
            var j = f.summary.$t
        } else
        var j = "";
        s = j;
        a = s.indexOf("<img");
        b = s.indexOf("src=\"", a);
        c = s.indexOf("\"", b + 5);
        d = s.substr(b + 5, c - b - 5);
        if ((a != -1) && (b != -1) && (c != -1) && (d != "")) img[i] = d;
        var l = '<table border="0" cellpadding="0" cellspacing="0" style="margin-bottom:5px;border-bottom:double #eee"><tr><td><img width="110" height="85" src="' + img[i] + '" align="left" border="0" title="' + g + '" alt="' + g + '" style="margin:5px 10px 0 0"><a href="' + h + '"><b>' + g + '</b></a><p style="margin:0;padding:5px 0 10px">' + removeHtmlTag(j, sumPosts) + ' ...</p></td></tr></table>';
        var m = '<li><a href="' + h + '">' + g + '</a></li>';
        if ((i >= 0) && (i < list1)) {
            var n = l
        }
        if (i == list1) {
            var n = '<div class="itechplus-rc"><ul>' + m
        }
        if ((i > list1) && (i < numposts - 1)) {
            var n = m
        }
        if (i == numposts - 1) {
            var n = m + '</ul></div>'
        }
        document.write(n)
    }
}
document.write("<script src=\"http://www.itechplus.info/feeds/posts/default/-/Office?max-results="+numposts+"&orderby=published&alt=json-in-script&callback=showrecentposts\"><\/script>");
//]]>
</script>
</div>
* Trong đoạn code trên :
  • numposts = 5; : tổng số bài viết được hiển thị
  • list1 = 1; : số bài viết hiển thị kèm ảnh thumbnail
  • sumPosts = 168; : số ký tự mô tả ( summary )

* Nếu bạn muốn hiển thị bài viết mới nhất cho cả Blog thì thay thế đoạn code sau :

document.write("<script src=\"http://www.itechplus.info/feeds/posts/default/-/Office?max-results="+numposts+"&orderby=published&alt=json-in-script&callback=showrecentposts\"><\/script>");

thành

document.write("<script src=\"http://www.itechplus.info/feeds/posts/default?max-results="+numposts+"&orderby=published&alt=json-in-script&callback=showrecentposts\"><\/script>");

3. Save and Done.

* Update : một số bạn yêu cầu chèn thêm ảnh đại diện khi bài viết không có ảnh và tùy chọn để thay đổi màu chữ tiêu đề. Để làm điều này, bạn cần thay đoạn code chính của thủ thuật bằng đoạn code bên dưới :

<style type="text/css"> 
#itechplus-rc {width:260px;margin:0;padding:10px;overflow:hidden;border:1px solid #ccc;background:#fff} 
.itechplus-rc h2{background:#39c;color:#fff;line-height:1.6em;margin:0 0 10px;padding:4px 10px;font-size:12px;font-weight:bold} 
.itechplus-rc ul{list-style:none;margin:0;padding:0} 
.itechplus-rc li{text-indent:0;background:url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhac4LJuJXEuY1_8bAUuB-H5j8-uVOXVNupcTSqyUKgz9QdtRxJ8UwyN5EioSOeL6sOONxE98eEfCLW_IFG0d_iKEO-pKybhlPYDj2yu5U8uUyB2v-FF1P9gHTQ1crMHAt38-SvV5BOSJ4T/) no-repeat 0 7px;line-height:1.5em;margin:0;padding:2px 0 2px 15px} 
.itechplus-rc h2 a:link, .itechplus-rc h2 a:visited {color:#fff} 
</style>
<div id="itechplus-rc" class="itechplus-rc"> 
<h2><a href="http://www.itechplus.info/search/label/Office?&amp;max-results=8">Tin học văn phòng</a></h2> 
<script type='text/javascript'> 
numposts = 5; 
list1 = 1; 
sumPosts = 168; 
maintitle = "#f0c";
subtitle = "#39c";
</script> 
<script type='text/javascript'> 
//<![CDATA[ 
function removeHtmlTag(a, b) { 
    var s = a.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) 
        } 
    } 
    s = s.join(""); 
    s = s.substring(0, b - 1); 
    return s 

function showrecentposts(e) { 
    img = new Array(); 
    for (var i = 0; i < numposts; i++) { 
        var f = e.feed.entry[i]; 
        var g = f.title.$t; 
        var h; 
        if (i == e.feed.entry.length) break; 
        for (var k = 0; k < f.link.length; k++) { 
            if (f.link[k].rel == 'alternate') { 
                h = f.link[k].href; 
                break 
            } 
        } 
        if ("content" in f) { 
            var j = f.content.$t 
        } else if ("summary" in f) { 
            var j = f.summary.$t 
        } else 
        var j = ""; 
        s = j; 
        a = s.indexOf("<img"); 
        b = s.indexOf("src=\"", a); 
        c = s.indexOf("\"", b + 5); 
        d = s.substr(b + 5, c - b - 5); 
        if ((a != -1) && (b != -1) && (c != -1) && (d != ""))  {img[i] = d;} else {img[i]="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9OLewAg7URjEM9cQrp8Nj-qXQWsvkB0vePp08GqKjINNEbGp00k-WQBpUBzBswUlxQG1rEWt1hm_cn0vzn2xvXSPTr5Mj86CMadbVqBQ81kzR62ta05j0BhlYTWDT83chhgUUSufInhg/";} 
        var l = '<table border="0" cellpadding="0" cellspacing="0" style="margin-bottom:5px;border-bottom:double #eee"><tr><td><img width="110" height="85" src="' + img[i] + '" align="left" border="0" title="' + g + '" alt="' + g + '" style="margin:5px 10px 0 0"><a href="' + h + '" style="color:'+maintitle+'"><b>' + g + '</b></a><p style="margin:0;padding:5px 0 10px">' + removeHtmlTag(j, sumPosts) + ' ...</p></td></tr></table>'; 
        var m = '<li><a href="' + h + '" style="color:'+subtitle+'">' + g + '</a></li>'; 
        if ((i >= 0) && (i < list1)) { 
            var n = l 
        } 
        if (i == list1) { 
            var n = '<div class="itechplus-rc"><ul>' + m 
        } 
        if ((i > list1) && (i < numposts - 1)) { 
            var n = m 
        } 
        if (i == numposts - 1) { 
            var n = m + '</ul></div>' 
        } 
        document.write(n) 
    } 

document.write("<script src=\"http://www.itechplus.info/feeds/posts/default/-/Office?max-results="+numposts+"&orderby=published&alt=json-in-script&callback=showrecentposts\"><\/script>"); 
//]]> 
</script> 
</div>

Trong đó :

  • maintitle = "#f0c"; : màu tiêu đề bài viết đầu tiên ( có ảnh và trích dẫn )
  • subtitle = "#39c"; : màu tiêu đề các bài viết tiếp theo

Các bạn có thể xem lại bài viết Bảng mã màu dành cho Blogger để chọn màu phù hợp. Ngoài ra, iTechPlus cũng đã có bài viết hướng dẫn rút gọn tiêu đề đối với những bài viết có tiêu đề quá dài, cũng như hiển thị đầy đủ mỗi khi rê chuột vào, các bạn có thể xem lại tại đây.

* Lưu ý : đoạn code trên có sử dụng một số hình ảnh mà iTechPlus.info sử dụng. Vì vậy, để tránh ảnh hưởng đến site này và blog bạn, vui lòng download về và upload lên host riêng để sử dụng.

Rất đơn giản phải không các bạn !

Chúc các bạn thành công !

iTechPlus

Đăng ký nhận thủ thuật mới

Bạn có thể cập nhật những thủ thuật mới từ iTechPlus.info một cách nhanh nhất bằng cách :

Subscribe to RSS Đăng ký nhận tin RSS

Subscribe to Email Đăng ký nhận tin qua Email

Ý kiến bạn đọc [ 35 ]

VISITOR

Thủ thuật rất hay nhưng bạn có thể chính lại cho tựa đề bài viết rút gọn đc hem, chứ nhiều cái bài viết có tựa đề khá dài như vậy cái khung này dài ngắn khác nhau nhìn ko đẹp mắt lắm. Thanks bạn mong có nhiều thủ thuật hay nữa ^^

ADMIN
iTechPlus 22:41 23/3/11 Trả lời

Ok ! Mình sẽ update sau.

VISITOR

Nếu đc thì bạn có thể làm rút gọn tiêu đề bài viết nhưng khi rê chuột vào thì hiện đầy đủ tiêu đề bài viết lun
Ah web bạn dùng tiện ích nào để chia phần trang chủ ra 2 phần ràu cho 2 tiện ích recent xuất hiện trên cùng 1 hàng vậy

ADMIN
iTechPlus 09:11 25/3/11 Trả lời

Mình sẽ update cho bạn sau khi có thời gian. Hiện giờ đang "lu bu" quá ! (^_^)

ADMIN
iTechPlus 13:08 26/3/11 Trả lời

Đã post thủ thuật theo yêu cầu của bạn. Xem tại đây

VISITOR
Nặc danh 16:03 27/3/11 Trả lời

Bạn ơi mình mún chia phần post ra làm 2 phần để chèn widget giống ngoài trang chủ của bạn thì làm sao nhỉ???

ADMIN
iTechPlus 16:14 27/3/11 Trả lời

À, cái này chỉ chèn một đoạn code css vào template là được thôi. Mình sẽ post hướng dẫn trong thời gian sớm nhất có thể. Bạn theo dõi nhé !

VISITOR
Nặc danh 23:17 29/3/11 Trả lời

Mình nghĩ bạn nên cải tiến thêm cho tiện ích này ^^, chẳng hạn như những bài viết ko có hình ảnh thì sẽ có hình riêng cho những bài đó hoặc nếu có thể thì bạn chỉnh tiện ích này khi rê chuột vào link thì sẽ xuất hiện title, chữ, hình ảnh của bài đó chẳng hạn.

ADMIN
iTechPlus 23:34 29/3/11 Trả lời

Ok mình sẽ update sau. Còn vụ hiển thị nội dung và hình ảnh khi rê chuột thì mình sẽ giới thiệu ở tiện ích khác.

VISITOR
Bmaster 15:25 31/3/11 Trả lời

bạn hướng dẫn mình tùy biến màu chữ với
mình muốn màu chữ tiêu đề bài đầu màu tím chẳng hạn :D

ADMIN
iTechPlus 17:51 31/3/11 Trả lời

Đã update bài viết theo yêu cầu của các bạn. Các bạn xem lại nhé !

VISITOR
Test2vn 08:42 1/4/11 Trả lời

Bạn qua xem giúp mình sao khi để tiện ích này trên mainpost thì các bài viết liên quan lại hiện một đường gạch ngang bên dưới mà mình để bên slide thì cái tiện ích này lại hiển thị bình thường.Xem giúp nhé cảm ơn nhiều

ADMIN
iTechPlus 10:01 1/4/11 Trả lời

À, đó là do thuộc tính underline được áp dụng cho những liên kết trong bài viết. Để bỏ nó bạn search với từ khóa "body", tìm dòng text-decoration: underline; và thay thế thành text-decoration: none; là xong.

Chúc bạn thành công !

VISITOR
Admin 10:13 9/4/11 Trả lời

Mình muốn thay đổi độ rộng của khung hiển thị mà ko đc bạn à :( Có phải tùy chỉnh ở đoạn này ko bạn?

#itechplus-rc {width:260px...

ADMIN
iTechPlus 10:16 9/4/11 Trả lời

@Bắp Cải : Đúng rồi đó bạn ! (^_^)

VISITOR
Bắp Cải 10:47 9/4/11 Trả lời

Cụ thể là như hình dưới đây. Main body của mình như thế, và mình chèn widget này vào chỗ mình khoanh đỏ, nhưng khi hiển thị thì nó chỉ hiển thị với độ rộng nhỏ hơn độ rộng của main body, mặc dù mình đã chỉnh độ rộng như trong đoạn code của bạn! Hi vọng bạn có thể giúp đỡ mình giải quyết vấn đề này!


http://www.anhtructuyen.com/?di=15130232043814

ADMIN
iTechPlus 10:57 9/4/11 Trả lời

@Bắp Cải : bạn cung cấp url trang của bạn để mình test xem thế nào (link hathanglangtu không truy cập được)

VISITOR
Bắp Cải 11:12 9/4/11 Trả lời

http://www.baobapcai.info ^^ Bạn thử vào xem giúp mình với! Loạn xị ngậu hết cả rùi!

ADMIN
iTechPlus 11:20 9/4/11 Trả lời

Bạn tìm trong template dòng "b:section class='main' id='main' showaddelement='no'" và sửa lại "no" thành "yes". Sau đó vào Phần tử trang ở phía trên phần "Bài đăng trên Blog" có section để tạo widget HTML và dán code của thủ thuật vào, sau đó sửa "#itechplus-rc {width:260px..." thành "#itechplus-rc {width:4800px..." là OK

VISITOR
Admin 11:42 9/4/11 Trả lời

Hic, mình đã làm thế! Nhưng khi F5 lại thì cái khung này nó chỉ hiện Full trong khoảng 1s (khi page chưa load hết), còn sau đó thì lại tự động co lai! Hic, bạn xem lại cho mình với!

ADMIN
iTechPlus 12:08 9/4/11 Trả lời

Bạn phải tạo mới widget HTML tại section mới chứ không phải sử dụng lại những cái cũ theo kiều kéo thả. Nếu không được nữa thì gửi temp để mình edit dùm.

VISITOR
Admin 13:14 9/4/11 Trả lời

Bạn ơi, cho mình cái mail với!

ADMIN
iTechPlus 15:06 9/4/11 Trả lời

Bạn gửi cho mình theo địa chỉ này : thanphong07@gmail.com

VISITOR
Bmaster 15:41 23/5/11 Trả lời

Có thể cho ảnh có link được không bạn, được thì hưỡng dẫn mình luôn nha

ADMIN
iTechPlus 00:57 24/5/11 Trả lời

@Bmaster: cũng được nhưng không cần thiết bạn à ! Nếu bạn vẫn muốn vậy thì để lại mail mình send code qua nhé !::i

VISITOR
Bmaster 20:23 27/5/11 Trả lời

Mail mình nè
tin9new@gmai.com
cảm ơn bạn trước nha

VISITOR
Lee Peace 23:24 30/5/11 Trả lời

Có cách nào canh đều "justify" cho thủ thuật này không vậy bạn?

ADMIN
iTechPlus 23:30 30/5/11 Trả lời

Chắc chắn rồi ! Nhưng hiện mình đang có chút công chuyện nên hẹn bạn vài bữa nữa nhé !:-d

ADMIN
iTechPlus 19:58 1/6/11 Trả lời

@peace19812006: bạn thêm thuộc tính "text-align:justify" vào id "#itechplus-rc", khi đó sẽ có dạng "#itechplus-rc {text-align:justify;...}"

VISITOR

Cấp cứu gấp! Sao mình áp dụng mình một số nhãn thì được, nhưng khi dùng nhãn khác thì blog không còn hiển thị đúng nữa. Cái rsidebar bị đưa vào dưới phần mainbody.
Chỉnh nhãn khác thì nó trở lại bình thường. Bị lỗi một số nhãn thôi. Không hiểu sao nữa

VISITOR

Xin admin cho mình hỏi:
Ở bài viết của bạn:Tiện ích Recent Posts giống iTechPlus.info, mình làm tương tự nhưng hình ảnh trong bài viết của mình lại không hiện lên!!!
Chỗ này: (list1 = 1; : số bài viết hiển thị kèm ảnh thumbnail) Nhưng trong blog của mình thì không hiện ảnh thumbnail.
Admin chỉ mình với!
mail của mình là: hoaidongkc@gmail.com
Thật lòng cảm ơn nhiều lắm!

VISITOR
Unknown 04:30 1/11/11 Trả lời

BAN OI LÀM THẾ NÀO ĐỂ MÌNH CÓ ĐƯỜNG LINH NHƯ CỦA BẠN http://www.itechplus.info/feeds/posts/default/-/Office.GIÚP MÌNH NHÉ,MÌNH MỚI HỌC NÊN KO BIẾT ::V

VISITOR
HieuZ 10:17 8/11/11 Trả lời

Cám ơn Itechplus rất nhiều, mình đã tìm cách hiển thị theo lebel như thế này mà bây giờ mới thấy ::i

VISITOR
Unknown 15:42 6/10/12 Trả lời

Đúng là không thể nào cho nó to ra được nó chỉ có ở 260 thôi

VISITOR
Nặc danh 18:10 29/10/12 Trả lời

Cám ơn itechplus

Ý kiến của bạn

* Lưu ý :
- Vui lòng gõ tiếng Việt có dấu khi viết bình luận.
- Nội dung phải liên quan đến chủ đề bài viết.
- Không dùng lời lẽ khích bác, thô tục ảnh hưởng đến người khác.
- Không đặt link đến Blog/Web khác.
- Những góp ý, thắc mắc không liên quan các bạn vui lòng post tại đây.

Thân, iTechPlus.

KaKa Khóc rồi nè Ngạc nhiên Sợ quá đi thôi Thèm nhỏ dãi Mỏ nhọn
Không thèm nói Bị thôi miên Cà phê Số một Không đồng ý Tức giận
Cười đểu Cười lè lưỡi Lo lắng Thật khó hiểu Không hiểu Buồn ngủ
Làm hòa nhé Muốn gây sự hả Thẹn thùng Ngầu chưa Tan nát cõi lòng Cứ tự nhiên
Là sao nhỉ Im lặng Hết cách Bở hơi tai Yêu thế Bái bai

 
Copyright @ 2009 - 2011 - iTechPlus.info. All rights reserved.
Ghi rõ nguồn khi phát hành lại thông tin từ Website này.
Design by iTechPlus. Powered by Blogger
Based on Minima Template.