╃巡洋艦㊣ 2011-03-03 18:06:00 8592次浏览 1条评论 0 0 0

Web feef是一种用于为用户提供经常更新内容的数据格式。在这篇文章中,我们描述了怎样使用组件Zend_Feed,它是一个优秀的Zend Framework组件的,可以为一个Yii应用生成Web feed。这篇文章同样是一篇如何使用Zend Framework的组件的教程。

首先,我们下载 Zend Framework 并解压至目录protected/vendors/Zend。确保文件protected/vendors/Zend/Feed.php存在。

然后,在SiteController(也可以是另一控制器),创建一个feed action如下代码:

Yii::import('application.vendors.*');
require_once('Zend/Feed.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,
            'lastUpdate'=>$post->createTime,
        );
    }
    // 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部分。

Zend_Feed组件都有许多其他的特点。如果你感兴趣,请参阅文档。

您需要登录后才可以评论。登录 | 立即注册