2014-03-22

Typecho调用RSS
http://ben-lab.com/typecho/1543.html
Wordpress小工具已经内置了RSS工具,可以输入RSS地址然后在前台显示该地址最近更新的条目,说白了就是显示别人博客的最新文章。但是Typecho里面并没有这种工具,我们就要通过代码来实现。
效果可以看边栏的"最新日记",里面调用了我的小站"Ben的天空"最新文章。
首先,在文本编辑器里新建文档,粘贴下面的代码,并且命名为rss.class.php
<?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上传到网站根目录,然后编辑当前主题,在你想显示的地方粘贴以下代码:
<?php
include_once('rss.class.php');
$url="http://ben-lab.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>';
}
?>
到这一步就大功告成啦,有问题请留言。
Categories: