RSS Feed使用Codeigniter

时间:2014-04-03 06:09:11

标签: php codeigniter rss

我使用Codeigniter根据here

的教程创建RSS Feed

但我的问题是网页上没有显示Feed内容,但是如果你浏览html源代码就可以使用。

这是我的控制器代码:

public function __construct()
{
    parent::__construct();        
    $this->load->model('articles_model');
    $this->load->helper('xml');
    $this->load->helper('text');
}

public function index()
{
    $data['feed_name'] = 'MyDebut.ph'; 
    $data['encoding'] = 'utf-8'; 
    $data['feed_url'] = 'http://www.mydebut.com/feeds'; 
    $data['page_description'] = 'Everything for turning 18.'; 
    $data['page_language'] = 'en-en'; 
    $data['creator_email'] = 'mydebutph@gmail.com'; 
    $data['posts'] = $this->articles_model->getArticlesPaginated(0,30); 


    header("Content-type: text/xml; charset=utf-8");

    $this->load->view('rss', $data);
}

我的观看代码:

    <?php echo '<?xml version="1.0" encoding="' . $encoding . '"?>' . "\n"; ?>
<rss version="2.0">
    <channel>
        <title><?php echo $feed_name; ?></title>
        <description><?php echo $page_description; ?></description>
        <link><?php echo $feed_url; ?></link>
            <?php foreach ($posts as $post): ?>
            <item>
              <title><?php echo xml_convert($post['art_title']); ?></title>
              <link><?php echo base_url().'blogs/'.$post['sec_slug'].'/'.$post['cat_slug'].'/'.$post['art_slug'];?>
              <description><?php echo character_limiter($post['art_sub'], 300); ?></description>
            </item>
        <?php endforeach; ?>
    </channel>
</rss>

2 个答案:

答案 0 :(得分:0)

查看缓冲区

确保通过传递true作为第三个参数

来设置缓冲区(视图为字符串)
$view = $this->load->view('rss', array('data'=>$data), true);

输出等级

您可以使用输出类将缓冲区(而不是视图本身)直接发送到浏览器


$this->output->set_content_type('application/rss+xml')->set_output(file_get_contents($view));

使用适当的元属性

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">

链接到Xml文档

将此添加到文档的head。 (仅限博客页面)


<link rel="alternate" type="application/rss=xml" title="Blog Feed" href="<?php echo site_url('rss'); ?> "/>

答案 1 :(得分:0)

我不知道你的模型代码中有什么,但是我可以在你的控制器中看到你没有从模型中获得结果数组。检查rss视图的22行...

    <?php foreach($posts->result() as $post): ?>

另请查看this文档,也许可以帮助您