Zend_Feed 的项目实际应用

  @author     songfeng
       RSS0.9/1.0/2.0 ATOM 全部是内容聚合的应用,优点一是浏览者可以订阅其网站,能收到最新的网站更新内容.二是有利于搜索引擎抓取.个人感觉缺点是会被其它网站当成复制品,批量 抓取网站更新内容, 但这也许又不是坏事. RSS标准有些乱, 0.9和2.0 与1.0各有其主, ATOM是一个博客网站BLOGGER引入的, 由GOOGLE发扬光大, 但还是遵循RSS2.0的网站较多, 说白了两家只是标 准之争. 用户体验都一样.
Zend_Feed对RSS和ATOM进行了简单封装,实现的功能大致包装指定网站FEED的抓取,XML文件抓取, 字符串抓取, 数组抓取, 生成FEED, 生成并输出FEED.
通用结构如下
array(
                'title'
                'description'
                'link'
                'charset'
                'language'
                'entries' => array (
                                             array(
                                                       'title'
                                                       'link'
                                                       'description'
                                                       'author'
                                                       'category'
                                                       'pubDate')
                                            )
              )

当然详细的KEY您就要参考相关手册了,上面的entries其实就是RSS的item.
rss atom 元素名称对比
title  title                   网站标题
link  id    网站地址
description  subtitle    网站描述
pubDate
  updated           网站更新时间

entries内(RSS为Item):

title  title                   每篇文章标题
link  id                     每篇文章链接地址
description  summary           每篇文章的描述
pubDate  updated              每篇文章的发布时间

这是最后的程序代码, 我是放在MODEL里的, 很简易,没怎么构思, 只是基本的思想, 当然我们可以换成更巧妙的方式去实现它, 或者自己手动生成, 只有最基本的功能就是把网站最新的文章前30篇做为FEED
       
$sql = 'SELECT archive_id, title, content, author, dateline FROM archives ORDER BY dateline DESC LIMIT 30';
        $stmt = $this->_db->query($sql);
       
        while($row = $stmt->fetch()) {
            $rssRow['title'] = $row['title'];
            $rssRow['link'] = 'http://' . $_SERVER['SERVER_NAME'] . '/article-view-' . $row['archive_id'] . '.shtml';
            $rssRow['description'] = isset($row['content']) ? $row['content'] : '内容为空';
            $rssRow['author'] = $row['author'];
            $rssRow['pubDate'] = date('Y年m月d日 H:i', $row['dateline']);
            $rssDB[] = $rssRow;
        }
        $rss['title'] = $setting->setting_web_title;
        $rss['description'] = $setting->setting_web_title_desc;
        $rss['link'] = 'http://' . $_SERVER['SERVER_NAME'];
        $rss['charset'] = 'utf-8';
        $rss['language'] = 'zh-cn';
        $rss['entries'] = $rssDB;

        try {
            $feed = Zend_Feed::importArray($rss);       
        }catch(Zend_Exception $e) {
            echo $e->getMessage();
            exit;
        }
       
        return $feed->saveXml();

           
posted @ 2009-04-10 11:53  已注销00021  阅读(397)  评论(0)    收藏  举报