我使用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>
答案 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/">
将此添加到文档的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文档,也许可以帮助您