同时感谢原版作者(英文):PurpleMoggy
有了这个功能后,可以说,Blogger就基本上和Wordpress差不多了。如果不是由于某些原因,用不了Blogger的域名绑定服务,那么再申请一个域名,基本上已经可以做成一个和 Wordpress差不多的Blog,而且还比Wordpress省事,不用自己架设网站(技术要求还更高)和花钱租空间。
话 归正传,本Hack是根据标签来判断文章相关性的,注意标签中不能包含像?/之类的字符,对文章的标签数量也没有限制。在咖啡鱼的教材中,是将相关文章放在 "页面元素"中,需要添加一个HTML/Javascript模块。本例有点改动,将相关文章放在文章后面,自己比较喜欢这种形式。
1、把下面代码放在<head></head>中。其中的"i < 12"是控制文章数量的,建议数值不要太大,以免影响浏览速递。
2、找到下面黑色的代码,在</b:if>与</b:loop>之间,插入如下红色的代码。注意:"max-results=12"是控制相关文章的显示数值。<script type="text/javascript">
//<![CDATA[
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() {
var r = Math.floor((relatedTitles.length - 1) * Math.random());
var i = 0;
document.write('<ul>');
while (i < relatedTitles.length && i < 12) {
document.write('<li><a href="' + relatedUrls[r] + '">' + relatedTitles[r] + '</a></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 expr:href='data:label.url' rel='tag'><data:label.name/></a><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&callback=related_results_labels&max-results=12"' type='text/javascript'/>
</b:if>
</b:loop>
</b:if>
3、找到自己想要显示相关文章的位置,将下面红色代码放进去,保存就OK那了。本例就放在评论前,如下面黑色代码。
<b:if cond='data:blog.pageType == "item"'>
<script type="text/javascript"> removeRelatedDuplicates(); printRelatedLabels(); </script> </b:if>
<div id='comments'>
<a name='comments'/>
<h4>
<b:if cond='data: post.numComments == 1'>
1 条评论:
<b:else/>
<data:post.numComments/> 条评论:
</b:if>
</h4>
<dl id='comments-block'>
<b:loop values='data: post.comments' var='comment'>
<dt class='comment-author' expr:id='"comment-" + data:comment.id'>
<a expr:name='"comment-" + data: comment.id'/>
<b:if cond='data:comment.authorUrl'>
<a expr:href='data:comment.authorUrl' rel='nofollow'><data:comment.author />
4、完成,看看效果吧!
Power by 写写改改™













26 条 留言(发表评论):
相关文章用JavaScript脚本,将文章的标签生成json数据,然后查询出一定数量的文章。这次重新换模板,已经不用这个功能了,因为有五个标签的话,单生成json数据就要十多秒。测试用二十个标签,就要差不多三十秒才可以生成json数据,可以看到生成文章标签像慢镜一样,一个个出来,每个标签出来都要花一秒至两秒的时间。
不知是否是网络问题,还是...
哈哈,我也用上你这个相关文章功能了,这个好像比我那个“随机文章”的速度快些....
呵呵,那我都不用你的那个了
本来还在观望
呵呵,还忘记了,我现在用的还不是这个,用了一个另外一个相关文章功能
和这个功能差不多,只是没有这个那么先进,每个标签都读,而是指定读几个标签的文章。我指定其只读一个标签的文章,所以速度会好点
头大,照着做没有效果出来
晕,难道说得不够清楚?
有没有报错啊?
[color=#0000FF][size=5][url=http://mikeshaws.blogspot.com]很多Blogger并没有这里所说的XXX之间的代码,我看过很多Blogger原始模板里都没有你所说的上面代码,更别说把其他的代码插入进去了。[/url][/size][/color]
[url=http://mikeshaws.blogspot.com][color=#0000FF]很多Blogger并没有这里所说的XXX之间的代码,我看过很多Blogger原始模板里都没有你所说的上面代码,更别说把其他的代码插入进去了。[/color][/url]
没有的话,可能是已经修改,或者取消了在文章里显示该文章的标签。
如果文章中没有显示标签的话,那首先要启用该功能,才可以接着用这个相关文章的功能。
非常感谢!!我的也设置成功了,大家看看blog.bai0.com
呵呵,看到了
好帖真多啊。
ID 为"Blog1"的窗口小部件不能包含元素"#comment"。窗口小部件只能包含 b:includable 元素。
这样的错误提示
代码放错了吧?
要放在b:includable标签内
恩,我也搞定了,谢谢belen分享。
不客气,Google不知啥时推出热文和相关文章功能...
如何修改相关文章在整个版面的位置呢?
比如我添加了这个功能之后,显示的位置超出了版面,想把它移到右边一些,能实现么?
将显示代码放在一个DIV内,控制DIV的宽度和位置
不好意思,我想问一下,你说的第3步插入代码,我没有找到,你能给我说明一下么?我看到好像很多人都没有找到似的。没有这段代码,还怎么添加其他代码啦。希望你能抽个功夫,教我怎么弄啦。我的邮箱是:softfly365@163.com,谢谢啦
第三步的代码位置,是根据你的排版自己放的。
本例中的放置位置,是我的模板,不是标准模板,已经做了很大改进,所以是找不到的。
我介绍的方法比较复杂点,如果对Blogger代码不熟的话。
可以看看色彩斑斓的,有详细设置过程:http://sunr.blogspot.com/2006/12/blogger_11.html
恩。
这个插入文章下面介于评论之间的位置比较合适。
用模块方式的容易和别的模块搞混。
谢谢帮助我完成我的心愿!
blogger自定义域名还是可以的。自己换IP就可以。我的博客就是这样的。
我用的是2009年的blogspot的模板,没有找到第二步和第三步中所说的代码阿!
可以针对最新的模板做一个教程吗?谢谢!