通过标签确定相关文章,以乱序插入文章结尾。
首先把这段Javascript 插入</head>标签前。<script type='text/javascript'>
找到下面这段代码
//<![CDATA[
<!-- Script functions for Related Posts: RelatedLabels(), RemoveDuplicatedPosts(), contains(), ShowRelatedPosts()-->
var relatedPostsNum = 0;
var relatedTitles = new Array();
var relatedUrls = new Array();
var relatedDates = new Array();
function RelatedLabels(json) {
for (var i = 0; i < json.feed.entry.length; i++) {
var entry = json.feed.entry[i];
relatedTitles[relatedPostsNum] = entry.title.$t;
relatedDates[relatedPostsNum] = entry.published.$t.substr(0,10);
for (var j = 0; j < entry.link.length; j++) {
if (entry.link[j].rel == 'alternate') {
relatedUrls[relatedPostsNum] = entry.link[j].href;
relatedPostsNum++;
break;
}
}
}
}
function RemoveDuplicatedPosts(PostUrl) {
var tmpUrls = new Array(0);
var tmpTitles = new Array(0);
var tmpDates = new Array(0);
function contains(a, e) {
for(var j = 0; j < a.length; j++)
if (a[j]==e)
return true;
return false;
}
for(var i = 0; i < relatedUrls.length; i++) {
if(!contains(tmpUrls, relatedUrls[i]) && PostUrl != relatedUrls[i]) {
tmpUrls.length += 1;
tmpUrls[tmpUrls.length - 1] = relatedUrls[i];
tmpTitles.length += 1;
tmpTitles[tmpTitles.length - 1] = relatedTitles[i];
tmpDates.length += 1;
tmpDates[tmpDates.length - 1] = relatedDates[i];
}
}
relatedTitles = tmpTitles;
relatedUrls = tmpUrls;
relatedDates = tmpDates;
}
function ShowRelatedPosts(PostUrl) {
RemoveDuplicatedPosts(PostUrl);
var r = Math.floor((relatedTitles.length - 1) * Math.random());
var i = 0;
if (relatedTitles.length > 0) {
document.write('Related Posts: <ul>');
while (i < relatedTitles.length && i < 5) {
document.write('<li><a href="' + relatedUrls[r] + '">' + relatedTitles[r] + '</a> - ' + relatedDates[r] + '</li>');
if (r < relatedTitles.length - 1)
r++;
else
r = 0;
i++;
}
document.write('</ul>');
}
}
//]]>
</script><b:if cond="data:post.labels">
改为
<data:postlabelslabel>
<b:loop values="data:post.labels" var="label">
<a href="data:label.url" rel="tag"><data:label.name></data:label.name></a><b:if cond="data:label.isLast != "true"">,</b:if>
</b:loop>
</data:postlabelslabel></b:if><b:if cond='data:post.labels'>
红色是用来调整数量的。
<data:postLabelsLabel/>
<b:loop values='data:post.labels' var='label'>
<a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != "true"'>,</b:if>
<!-- Fixed for Related Posts -->
<b:if cond='data:blog.pageType == "item"'>
<script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&callback=RelatedLabels&max-results=10"' type='text/javascript'/>
</b:if>
</b:loop>
</b:if>
紧接着上面这行代码,加入以下的输出代码。<!-- Fixed for Related Posts -->
保存一下,看看效果吧。
<b:if cond='data:blog.pageType == "item"'>
<script type='text/javascript'>
ShowRelatedPosts('<data:post.url/>');
</script>
</b:if>
转自:Abin's Tech Note
2007年7月12日星期四
blogger:加入相关文章功能(Related posts)
订阅:
博文评论 (Atom)
9 个无聊的人:
先保存了 ,以后试试看 ,看来你是javascript能手啊! 我要讨教你了。
我可不是高手,我只是转的,呵呵
谢谢你的分享。
我找这个找了很久了,不过不知道为什麽做了出来和你的效果不同,我要"Labels"之后空一行才到"相关文章",你知道怎样做吗?
我没有这段代码
没有哪段代码?
特地来向你道谢,我试了三次才被我做到了,很笨hor~哈哈~
哈哈。。我也来加入行列咯。。^^
谢谢你的教导哦。。^^
你看看我的博客的相关文章怎么不能另外起一行呀,它和标签在一行,怎么可以改成另起一行?谢谢告知!
是呀如何另起一行啊!
发表评论