首先说明有最简单的方法,如80通过GOOGLE READER订阅10个以下的RSS供稿方法。
还有斑斓通过JSON的一键hack制作RSS供稿的方法。
我这里介绍的是直接修改你的模块的方法,好处是不必调用外部的JS文件,在博客上显示的也比较整齐。方法由hoctro 提供,原文在此
简单就是先切换到模版项,然后在页面元素项目上添加一个新的页面元素,选择添加HTML/JavaScript项目,然后给个命名“最新评论”。然后切换到修改html项目,在修改模版下面的扩展窗口小部件项目前的方框打勾,然后在代码方框里面搜索你刚刚添加的有“最新评论”的那个项目。然后完整替换类似这样的一块代码:
从
<b:widget id='HTML20' locked='false' title='最新评论' type='HTML'>
到
</b:includable>
</b:widget>
全部替换成以下代码:
<b:widget id='HTML20' locked='false' title='最新评论' type='HTML'>
<b:includable id='main'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<!-- <data:content/> -->
</div>
<div id='data'/>
<b:include name='quickedit'/>
<script type='text/javascript'>
/** Code taken from Sample at Code.Google.com **/
/**
* Lists blog entries from the specified JSON feed
* by creating a new 'ul' element in the DOM. Each
* bullet is the title of one blog entry, and contains
* a hyperlink to that entry's URL.
*/
function listEntries(json) {
var ul = document.createElement('ul');
for (var i = 0; i < json.feed.entry.length; 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;
var txt = document.createTextNode(entry.title.$t);
a.appendChild(txt);
li.appendChild(a);
ul.appendChild(li);
}
document.getElementById('data').appendChild(ul);
}
function search(query, type) {
removeOldQueryResults();
var script = document.createElement('script');
script.setAttribute('src', 'http://' + query + '/feeds/' + type +
'/default?alt=json-in-script&callback=listEntries');
script.setAttribute('type', 'text/javascript');
document.documentElement.firstChild.appendChild(script);
}
/**
* Removes results from the previous search, including
* the bullet list of blog entries and the script object
* used to obtain the feed.
*/
function removeOldQueryResults() {
// Remove the script element used to perform the query.
var script_nodes = document.getElementsByTagName('script');
for (var i = 0; i < script_nodes.length; i++) {
var cur_node = script_nodes[i];
if (cur_node.src && cur_node.src.indexOf('json') != -1) {
cur_node.parentNode.removeChild(cur_node);
}
}
// Remove the bullet list of blog entries.
var div = document.getElementById('data');
if (div.firstChild) {
div.removeChild(div.firstChild);
}
}
homeUrl = "<data:blog.homepageUrl/>";
var arr = new Array(4);
arr = homeUrl.split("/",4);
// To change from your blog to someone else (like mine,) do this:
// search("hoctro.blogspot.com", "comments");
// To change from recent comments to recent posts, do this:
// search(arr[2], "posts");
search(arr[2], "comments");
</script>
</b:includable>
</b:widget>
上面的替换方法是针对评论的,用上面的代码替换的结果是该模块能显示超过20个以上的最新评论。另外注意这一行
<b:widget id='HTML20' locked='false' title='最新评论' type='HTML'>
的HTML20,那个20数字是你的模块代号,不可以和已有的模块代号重复!所以最好替换的时候把这个20替换成被你替换模块的数字代号。
然后上面说的是评论的修改方法,要帖子的RSS怎么办呢?
只需修改代码后面的那个
search(arr[2], "comments");
变成:
search(arr[2], "posts");
就可以了。如果你希望看其他人博客的评论,例如我的博客的评论,你可以把这一行改成:
search("gfancn.blogspot.com", "comments");
如果你想限制显示的评论数,你可以修改以上代码
for (var i = 0; i < json.feed.entry.length; i++) {
var entry = json.feed.entry[i];
var alturl;
的var i = 0 ,修改0为你想显示的文章数,我自己的测试好像这里的限制有点问题,例如我设置成14,则显示12篇评论,15则11篇评论,类推12则12篇评论。具体大家自己尝试。
如果你要如上文所述显示自己的标签的RSS供稿呢?修改代码:
var script = document.createElement('script');
script.setAttribute('src', 'http://' + query + '/feeds/' + type +
'/default?alt=json-in-script&callback=listEntries');
script.setAttribute('type', 'text/javascript');
document.documentElement.firstChild.appendChild(script);
}
的这一部分,把'http://' + query + '/feeds/' + type +
'/default后面修改成
'http://' + query + '/feeds/' + type +
'/default/-/[如上文所说方法得到的标签名称]
这里有个英文效果图:
IE6下的效果:
aooggg.12gwrsfs_fgmzaqpo-5e@blogger.com |APPROVED|Compensation-Refund|
-
*Dear aooggg.12gwrsfs_fgmzaqpo-5e@blogger.com ,*
*This is to inform you of a very important information which will be of a
great help to re...
3 个月前
8 评论:
我想问问如果要使用外部rss供稿,例如del.icio.us的应该怎样改?
似乎那就不能运用此方法,而且你用其他的供稿方式在这里就算使用也是没有任何意义的,不会有任何区别……
那除了Google Reader的方法以外有没有别的方法可以实现多于5个的外部供稿呢?
我文章开头不就说了现有的几种方法吗?
链接都给出来了~~
我问的是除了Google Reader外的方法啊,你文章开头给的除了Google Reader都不支持外部供稿啊
;) 汗,似乎就google reader一种……
在这种方法上,我的评论都20多条了还在显示。
啥时候是个头啊。
我的意思是,我想显示10条最新评论的话该怎么办?注意,是“最新”
你说的如果你想限制显示的评论数,你可以修改以下代码
for (var i = 0; i < json.feed.entry.length; i++) {
var entry = json.feed.entry[i];
var alturl;
的var i = 0 ,修改0为你想显示的文章数。
这个好象是赋初值吧,就是说从第几条评论开始显示。
如果我设置成var i =12的话,那就是说前11条评论不显示,从第12条开始显示。
个人观点,不知对否。
所以上面的东东不能够符合我的要求,还烦帮忙看下。
byronjia#gmail.com
byronjia.blogger.com
http://byronjia.blogspot.com
上面的地址好像错了,汗。
还有,你的留言为啥直接能显示啊。
我的还要强制刷新。
还望告知。
发表评论: ☆欢迎灌水☆言论自由☆交流快乐☆