5/10/10

Cách tạo các bài liên quan

Chắc hẳn các bạn cũng biết, ở các trang tin tức như vnexpress.net, dantri.com.vn,... mỗi khi ta mở xem một tin nào đó, thì ở dưới mỗi bài viết đều có các tin tức liên quan hiện ra. Điều đó là cho người đọc có thể xem nhanh các bài liên quan mà không phải ngồi mài mò, tệ hơn họ có thể không thấy được các bài viết khác có cùng chủ đề trong blog của bạn. Blogspot mặc định không hỗ trợ tính năng này. Tuy nhiên bạn đừng lo, bài viết sau sẽ giúp bạn chèn thêm nó. Đây là một thủ thuật của Hoctro (hoctro.blogspot.com), tôi trình bày lại chi tiết hơn và chỉ biến đổi chút đỉnh cho phù hợp với blogspot của bạn.




- Trước tiên, bạn vào 
Template -> Edit HTML, nhớ sao lưu một bản Full Template trước khi chỉnh sửa.
- Click chọn 
Expand Widget Templates
- Bấm 
Ctrl+F để bật hộp tìm kiếm của trình duyệt, xong gõ từ khóa cần thiết đề tìm dòng 
class='post-footer-line post-footer-line-3'


- Chèn đoạn 
CODE 1 này ngay dưới thẻ   </div> thứ hai và bên trên dòng </b:includable>
CODE 1:
<b:if cond='data:blog.pageType == "item"'><div class='widget-content'><h2>Các bài liên quan</h2><div id='data2007'/><br/><br/><div id='hoctro' style="display:none">Widget by <u><a href='http://hoctro.blogspot.com'>Hoctro</a></u></div>&lt;script type=&quot;text/javascript&quot;&gt;homeUrl3 = &quot;vietwebguide.blogspot.com&quot;;maxNumberOfPostsPerLabel = 5;maxNumberOfLabels = 10;
function listEntries10(json) {var ul = document.createElement(&#39;ul&#39;);var maxPosts = (json.feed.entry.length &lt;= maxNumberOfPostsPerLabel) ? json.feed.entry.length : maxNumberOfPostsPerLabel;for (var i = 0; i &lt; maxPosts; i++) {var entry = json.feed.entry[i];var alturl;for (var k = 0; k &lt; entry.link.length; k++) {if (entry.link[k].rel == &#39;alternate&#39;) {alturl = entry.link[k].href;break;}}var li = document.createElement(&#39;li&#39;);var a = document.createElement(&#39;a&#39;);a.href = alturl;var txt = document.createTextNode(entry.title.$t);a.appendChild(txt);li.appendChild(a);ul.appendChild(li);}for (var l = 0; l &lt; json.feed.link.length; l++) {if (json.feed.link[l].rel == &#39;alternate&#39;) {var raw = json.feed.link[l].href;var label = raw.substr(homeUrl3.length+21);label = decodeURIComponent(label);var txt = document.createTextNode(label);var h = document.createElement(&#39;h4&#39;);h.appendChild(txt);var div1 = document.createElement(&#39;div&#39;);div1.appendChild(h);div1.appendChild(ul);document.getElementById(&#39;data2007&#39;).appendChild(div1);}}}function search10(query, label) {var script = document.createElement(&#39;script&#39;);script.setAttribute(&#39;src&#39;, &#39;http://&#39; + query + &#39;/feeds/posts/default/-/&#39;+ label +&#39;?alt=json-in-script&amp;callback=listEntries10&#39;);script.setAttribute(&#39;type&#39;, &#39;text/javascript&#39;);document.documentElement.firstChild.appendChild(script);}var labelArray = new Array();var numLabel = 0;<b:loop values='data:posts' var='post'><b:loop values='data:post.labels' var='label'>textLabel = &quot;<data:label.name/>&quot;;
var test = 0;for (var i = 0; i &lt; labelArray.length; i++)if (labelArray[i] == textLabel) test = 1;if (test == 0) { labelArray.push(textLabel);var maxLabels = (labelArray.length &lt;= maxNumberOfLabels) ? labelArray.length : maxNumberOfLabels;if (numLabel &lt; maxLabels) {search10(homeUrl3, textLabel);numLabel++;}}</b:loop></b:loop>&lt;/script&gt;</div></b:if><br/>
*** Lưu ý: Trước khi Copy và Paste vào template, các bạn hãy thay các thông số màu đỏ cho phù hợp. Cụ thể:
Các bài liên quan: tiêu đề mà bạn thích
vietwebguide.blogspot.com : địa chỉ blog của bạn
+ maxNumberOfPostsPerLabel = 
10 : số bài tối đa của mỗi label mà bạn muốn hiện
+ maxNumberOfLabels = 
5 : số label tối đa mà bạn muốn hiện

Save template lại. Thế là xong rồi đó.

Không có nhận xét nào:

Đăng nhận xét