作者:XXHYM123_702 | 来源:互联网 | 2014-05-16 09:11
Web feed是一种用于为用户提供经常更新内容的数据格式。在这篇文章中,我们描述了怎样使用组件Zend_Feed,它是一个优秀框架Zend Framework的优秀组件,可以为一个Yii应用生成Web feed。这篇文章同样是一篇如何使用Zend Framework的组件的教程。
首先,我们下载 Zend Framework 并解压至目录protected/vendors/Zend(农夫庄园注:需要下载zf1,官方需要注册才能下载,这里我把自己下载的放到百度网盘上供大家下载)。确保文件protected/vendors/Zend/Feed.php存在。
然后,在SiteController
(也可以是其他控制器),创建一个feed action,代码如下:
Yii::import('application.vendors.*');
require_once('Zend/Feed.php');
require_once('Zend/Feed/Rss.php'); //不加这行会报错
public function actionFeed()
{
// retrieve the latest 20 posts
$posts=Post::model()->findAll(array(
'order'=>'createTime DESC',
'limit'=>20,
));
// convert to the format needed by Zend_Feed
$entries=array();
foreach($posts as $post)
{
$entries[]=array(
'title'=>$post->title,
'link'=>$this->createUrl('post/show',array('id'=>$post->id)),
'description'=>$post->content,
//如果时间输出为字符串会报错:A non well formed numeric value encountered
'lastUpdate'=>date("d",strtotime($post->updateTime)),
);
}
// generate and render RSS feed
$feed=Zend_Feed::importArray(array(
'title' => 'My Post Feed',
'link' => $this->createUrl(''),
'charset' => 'UTF-8',
'entries' => $entries,
), 'rss');
$feed->send();
}
到此,feed就完成了,我们通过下面的URL访问:http://www.example.com/feed.xml
我们可以在页面的head
部分使用下列代码:
Yii::app()->clientScript->registerLinkTag(
'alternate',
'application/rss+xml',
$this->createUrl('site/feed'));
我们也可以使用CHtml:linkTag()直接插入链接标签在当前页面上。这两个方法的区别在于前者的代码可以写在任何地方,而后者只能出现在视图(或layout)的head部分。