[Blogger] 依標籤分類的相關文章(related posts)功能
如果在每篇文章下, 能夠列出跟這篇文章相同類型的其他文章, 對讀者來說,能節省更多搜尋條件.因此, 相關文章(related posts)的功能是很重要的. 有一種方式, 除了能自設列出幾個文章相關標籤,還可以將相關文章依標籤分類, 只要加入一段程式碼,就可達到效果.
通常一篇文章可能會下很多個標籤, 因此依標籤分類相關文章就顯得其獨特性.
首先, 先到版面配置 --> 修改HTML --> 打勾展開小裝置範本.
1.然後找到這行程式碼 <p><data:post.body/></p> , 如果範本中出現不只一處,可參考附圖的相對位置.加入下列這段落落長的程式碼.(紅字部分可自行修改)<b:if cond='data:blog.pageType == "item"'>
<div class='similiar'>
<!-- *****************http://hoctro.blogspot.com*****Jan,2007******************
-->
<!-- *****************Related Articles by Labels - Take Two******************
-->
<!--
Modified by JackBook.Com to make it easier to use.
1. Now, users don't need to change anything to use this widget. just copy and
paste, and done!
2. The current article will also be listed, now it's no more.
-->
<div class='widget-content'>
<h3>相關文章 : </h3>
<div id='data2007'/>
<script type='text/javascript'>
var homeUrl3 = "<data:blog.homepageUrl/>";
maxNumberOfLabels = 4; //相關文章標籤數
maxNumberOfPostsPerLabel = 10; //文章總數
function listEntries10(json) {
var ul = document.createElement('ul');
var maxPosts = (json.feed.entry.length <= maxNumberOfPostsPerLabel) ?
json.feed.entry.length : maxNumberOfPostsPerLabel;
for (var i = 0; i < maxPosts; i++) {
var entry = json.feed.entry[i];
var alturl;
for (var k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
alturl = entry.link[k].href;
break;
}
}
var li = document.createElement('li');
var a = document.createElement('a');
a.href = alturl;
if(a.href!=location.href) {
var txt = document.createTextNode(entry.title.$t);
a.appendChild(txt);
li.appendChild(a);
ul.appendChild(li);
}
}
for (var l = 0; l < json.feed.link.length; l++) {
if (json.feed.link[l].rel == 'alternate') {
var raw = json.feed.link[l].href;
var label = raw.substr(homeUrl3.length+13);
var k;
for (k=0; k<20; k++) label = label.replace("%20", " ");
label=decodeURI(label); //避免中文標籤出現亂碼
var txt = document.createTextNode(label);
var h = document.createElement('b');
h.appendChild(txt);
var div1 = document.createElement('div');
div1.appendChild(h);
div1.appendChild(ul);
document.getElementById('data2007').appendChild(div1);
}
}
}
function search10(query, label) {
var script = document.createElement('script');
script.setAttribute('src', query + 'feeds/posts/default/-/'
+ label +
'?alt=json-in-script&callback=listEntries10');
script.setAttribute('type', 'text/javascript');
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 = "<data:label.name/>";
var test = 0;
for (var i = 0; i < labelArray.length; i++)
if (labelArray[i] == textLabel) test = 1;
if (test == 0) {
labelArray.push(textLabel);
var maxLabels = (labelArray.length <= maxNumberOfLabels) ?
labelArray.length : maxNumberOfLabels;
if (numLabel < maxLabels) {
search10(homeUrl3, textLabel);
numLabel++;
}
}
</b:loop>
</b:loop>
</script>
</div>
</div>
</b:if>
如圖所示.
2. 其中出現幾個標籤的相關文章及文章數目是可以自己調整的.
maxNumberOfLabels = 2; //相關文章標籤數
maxNumberOfPostsPerLabel = 5; //相關文章數
3. 按下儲存後, 就可出現依標籤分類的相關文章了!
2008/11/16 更新 : 中文標籤會變成亂碼的問題已解決, 請參考 步驟1的某一行新增的藍字程式碼, label=decodeURI(label);參考來源:
New and Improved "Related Articles" Widget using the new Google's Ajax Feed API
Related posts on blogger









33 comments:
11/14/2008
最近你的blog真的是變成blogger急診室了...
不過!
我喜歡...^^
11/14/2008
Sango,沒那麼厲害啦!關於blogger改版,大概也只有這陣子才有空,以後可能又要繼續偷懶一下.:p
11/14/2008
有這麼多的blog教學文章真不錯^^
像我們這種不懂語法的人只能看著教學做了…
謝謝你囉~ 希望你有空的時候可以多多發表這類的文章^^
11/14/2008
別這麼說,其實也是互相交流啦! ^^
11/15/2008
大大,
你好
我好喜歡此功能...
但有一些問題出現了,
有亂碼,
你可看我的網
http://kwoksimon.blogspot.com/2008/11/if.html
11/15/2008
剛剛 測試了一下
會出現亂碼的原因 應該是 不支援'中文'的分類標籤....
'英文'的分類標籤可以正常的顯示 ^__^
11/15/2008
多謝大大指引...如大家知道中文字可解決後,請貼出跟大家分享.thanks again
11/15/2008
哈哈,我本來要舉手發問,沒想到Simon跟我有同樣的問題耶! [我的亂碼:%E6%B8%AC%E8%A9%A6%E6%96%87]
既然是中文BUG那就沒辦法摟XD 總之,還是謝謝Skyvee!
11/16/2008
可惜了中文顯示的部份,另外有一個相關文章教學文章,也很好用.可參考看看. Abin 的 加入相關文章功能
11/16/2008
謝謝大家,中文標籤會變成亂碼的問題已找到解法, 請參考 步驟1 的那行新增的藍字程式碼, label=decodeURI(label);加了這行,中文就搞定了! ^^
11/16/2008
我也是中文標籤,
試了只有出現標題,
沒有內容...
這個功能很不錯,可惜不能用
11/16/2008
看到更新了
再試一次還是只有標題...
11/16/2008
是不是有什麼符號不能用呢?
我的標籤之ㄧ"【故事】看樹狗"
會出不來~
後來把【】拿掉就可以了
11/16/2008
剛測試【】不能顯示~
- 跟()可以用...
11/16/2008
小白,由於需要經過編碼轉碼的過程,所以標籤儘量不要含符號,比較不會有問題,不然就要像你一樣努力去try看看哪些可以解碼了!^^
11/19/2008
thx skyvee大大,已解決了..
11/20/2008
Simon, 不客氣,也謝謝你們的反應!!^^
1/08/2009
謝謝你的分享,因為我比較喜歡你的「相關文章」,如果原來已經有另一個abin的「相關文章」http://abintech.azhai.org/2007/03/related-post.html
是不是要先把它移除呢?
1/08/2009
再請問一下,如果想在標題後再加上日期的話,要怎麼改呢?
1/08/2009
通達人,先移除比較好囉!否則就算彼此不影響,重覆出現也怪怪的. 這個功能沒有提供顯示日期,如果要改,可能要調整程式碼,不過我目前實在沒太多時間研究哩...真抱歉啊!
3/28/2009
請問怎麼設定字體大小顏色呢...如有空再幫我回答囉!!謝謝
4/02/2009
Jessie 想改哪裡的字體大小呢? 每一個地方不太一樣哦, 不然你可以用關鍵字 font 查一下你的範本目前的設定,再進行修改.font-family 是字型, font-size是字體大小, font-color是顏色
4/13/2009
Skyvee大大:
想請教您,Google Blogger的文章分類標籤可以一次修改嗎?
例如:我本來有數篇文章的分類是歸類為「旅行」的標籤,是否可以在不一篇一篇文章修改的方式下,一次把分類標籤改為「足跡」呢?
請您指教,謝謝!
4/16/2009
Mark, 在[文章]--> [修改文章]--> 左邊有標籤清單, 先點一下你想改的那些文章標籤, 就會只出現 該標籤的所有文章, 然後再選取你想改的文章, 選[標籤動作]-->就能套用舊標籤或是新標籤了
6/19/2009
Skyvee你這篇文章是我一直想要找的。
感謝你讓我的Blog終於有相關文章(related posts)功能。
部分內容引用在我的文章內。
http://pigdiscovery.blogspot.com/2009/06/fun-new-run-high-blogger-related-posts.html
ps:放心我有註明引用來源^_^
6/23/2009
Hi,謝謝你,我自己也很喜歡這功能,也很高興你也喜歡.^^
8/14/2009
你好!這篇文章讓我的blog有相關文章的功能,真的非常方便。^^
但是有個問題想請教,關於相關文章的"字型設定(大小與顏色)"要從那個地方修改呢?
是不是可以在你這段的程式當中加語法?
8/16/2009
阿婷你好,
如果要修改相關文章的字型, 可以在CSS區先設定這個區塊的字型, 然後再套用此CSS設定.
10/16/2009
Skyvee,您好,
這陣子開始經營blogger之後,發現您的網站真的是佛心來的,超好用。
相關文章這個功能我一開始引用的時候,功能都正常,但是後來突然失效了,我試著用薄弱的電腦知識去看原始碼,而且有重貼一次相關文章的程式碼,但還是抓不到原因....想請問Skyvee有什麼樣的可能性導致這樣的問題呢?
我的網誌:http://happinessatoz.blogspot.com/
感激不盡~*
10/17/2009
Zoe您好, 先謝謝您覺得文章有用,:).
我在猜,會不會您的標籤有個特殊字元,"☀",所以無法正常顯示, 請您先移除這個字元, 然後再看看會不會正常?
10/17/2009
哈哈,skyvee,你真是行家啊,果真是那個特殊字元的關係耶!真是太謝謝你了! ^^b
10/28/2009
skyvee您好,
我從另一個頁面過來這裡,因為我又有問題了
我的部落格http://leehan706.blogspot.com
已安裝好依標籤分類的相關文章,
但是不知道為什麼,我覺得文章底部的相關文章都是一樣的文章在輪迴,無法連到其他的文章,是哪裡出了問題呢?
麻煩您了
謝謝
10/29/2009
Han,
相關文章是抓最近幾篇文章, 所以出現的文章數會覺得重覆是這原因.
我要留言
謝謝您願意在此分享心得, 讓文章內容更豐富.
這篇文章被引用到...