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>'; } ?>
|
到这一步就大功告成啦,有问题请留言。