Typecho调用RSS

Typecho调用RSS
(来自ben-lab博客,现已无法打开)
Wordpress小工具已经内置了RSS工具,可以输入RSS地址然后在前台显示该地址最近更新的条目,说白了就是显示别人博客的最新文章。但是Typecho里面并没有这种工具,我们就要通过代码来实现。
效果可以看边栏的”最新日记”,里面调用了我的小站”Ben的天空”最新文章。
首先,在文本编辑器里新建文档,粘贴下面的代码,并且命名为rss.class.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php  
class ReadRSS{
var $url;
var $content;
var $values;
function ReadRSS($url){
$this->url=$url;
}
function ReadFile(){
$fp = fopen($this->url,"r");
while ( !feof($fp) ) {
$this->content .= fgets($fp,4096);
}
fclose($fp);
}
function ReadXML(){
$parser = xml\_parser\_create();
xml\_parser\_set\_option($parser,XML\_OPTION\_SKIP\_WHITE,1);
xml\_parser\_set\_option($parser,XML\_OPTION\_TARGET\_ENCODING,'UTF-8');
//设置编码,目前只支持ISO-8859-1、US-ASCII 和 UTF-8,也可以不设置,与目标编码一致
xml\_parse\_into\_struct($parser,$this->content,$this->values);
xml\_parser\_free($parser);
}
function RSS($n=10){
$this->ReadFile();
$this->ReadXML();
$in\_item = 0;
$i=0;
$read=array();
foreach ($this->values as $value) {
$tag = $value\["tag"\];
$type = $value\["type"\];
$value = $value\["value"\];
$tag = strtolower($tag);
if ($tag == "item" && $type == "open") {
$in\_item = 1;
} else if ($tag == "item" && $type == "close"){
$read\[$i\]\['link'\]=$link;
$read\[$i\]\['title'\]=$title;
if ($pubDate) {
$read\[$i\]\['pubDate'\]=$pubDate;
}
$read\[$i\]\['description'\]=$description;
$in\_item = 0;
$i++;
if ($i>=$n) {
break;
}
}
if ($in\_item) {
switch ($tag) {
case "title":
$title = $value;
break;
case "link":
$link = $value;
break;
case "pubDate":
$pubDate = $value;
break;
case "description":
$description = $value;
break;
}
}
}
return $read;
}
}
?>

把rss.class.php上传到网站根目录,然后编辑当前主题,在你想显示的地方粘贴以下代码:

1
2
3
4
5
6
7
8
9
10
<?php  
include\_once('rss.class.php');
$url="http://yijile.com/feed"; //RSS地址
$rss=new ReadRSS($url);
$values=$rss->RSS(5);
// 5可以改成别的数字,这是读取feed的条数
foreach ($values as $value) {
echo '<li><a target="\_blank" href="'.$value\["link"\].'">'.$value\["title"\].'</a></li>';
}
?>

到这一步就大功告成啦,有问题请留言。