将RSS提要添加到Codeigniter中的View部分

时间:2014-01-21 15:06:07

标签: php ios codeigniter templates rss

我是Codeigniter的新手,我正在尝试将RSS源添加到我的Home视图的一部分,如下所示。我已经问过这个问题,但是我不清楚我是如何提交代码的,所以我再次提交了它。我在多个论坛上研究了这一点,特别是这个,我绕圈子但是找不到答案。

主页视图

主视图包含标题图像,导航栏,jumbotron和登录表单。它还有以下部分,我想在其中添加RSS内容。

<div class="container">
<div class="row">
<div class="col-sm-8"><h1>Latest News</h1>

<?php

// RSS FEED HERE

?>

我有一个名为“User的索引函数中包含以下代码的控制器

用户控制器代码

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class User extends CI_Controller{

public function __construct()
{

  parent::__construct();
  $this->load->model('user_model');
  $this->load->library('rssparser');

}

 public function index()
 {

  if(($this->session->userdata('user_name')!=""))
  {
   $this->welcome();
  }

 else
 {

 $data['title']= 'Home';
 $this->load->view('include/header',$data);
 $this->load->view('pages/home.php', $data);
 $this->load->view('include/footer',$data);

 }

}

用户控制器中的控制器方法以获取RSS数据

rss Feed结果当前存储在无序列表中

 public function get_news()
 {

 // Get 6 items from latest news
 $this->rssparser->set_feed_url('http://www.datadomain.com');  // get feed
 $this->rssparser->set_cache_life(30);  // Set cache life time in minutes
 $rss = $this->rssparser->getFeed(6); 

 echo '<ul>';

foreach ($rss as $item)

{
   echo '<li>';
   echo $item['title']; 
   echo '</li>';

   echo '<li>';
   echo $item['description'];
   echo '</li>';

   echo '<li>';
   echo $item['link'];
   echo '</li>';

   echo '<li>';
   echo $item['pubDate'];
   echo '</li>';
}   

echo '</ul>'; 
}

如果我在控制器的索引功能中插入以下内容,我可以在我的主页上获取Feed,但它显示在页面顶部而不是我需要的部分。

$data['rss'] = $this->get_news();

我尝试在主页的视图部分添加$ rss,但我得到一个未定义的变量错误。

如果有人能帮我解决这个问题,我将不胜感激,因为我无法找到解决方案。

我的项目中使用的其他方法和视图

控制器方法欢迎()

public function welcome()
{
 $data['title']= 'Welcome';
 $this->load->view('include/header',$data);
 $this->load->view('pages/welcome_view.php', $data);
 $this->load->view('include/footer',$data);
 }

welcome_view

此视图表示应用程序的成员区域。由于应用程序处于构建的早期阶段,因此它不会在一分钟内保留任何实际内容。

<div class="container">
<div class="row">
<header class="page-header">
<img class="img-responsive" src="<?php echo site_url('../images/black_header.jpg'); ?>"   /> 
</header>
</div>
</div>


<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">

 <!-- Brand and toggle get grouped for better mobile display -->
 <div class="navbar-header">
 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs- example-navbar-collapse-1">
  <span class="sr-only">Toggle navigation</span>
  <span class="icon-bar"></span>
  <span class="icon-bar"></span>
  <span class="icon-bar"></span>
  </button>
  <a class="navbar-brand" href="<?php echo site_url('user/index') ?>">Premier Games</a>
  </div>

  <!-- Collect the nav links, forms, and other content for toggling -->
  <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
   <ul class="nav navbar-nav">
   <li><a href="<?php echo site_url('user/index') ?>">Home</a></li>
  <li><a href="<?php echo site_url('user/register') ?>">Register</a></li>
  </ul>

  <p class="navbar-text navbar-right"><strong>Signed in as <?php echo $this->session->userdata('user_name'); ?></strong></p>

  </div><!-- /.navbar-collapse -->

  </nav>


  <div class="container">
  <div class="content">
  <h2><?php echo $this->session->userdata('user_name'); ?>, Welcome Back</h2>

  <p>This section represents the area that only logged in members can access.</p>

  <h4><?php echo anchor('user/logout', 'Logout'); ?></h4>

  </div><!--<div class="content">-->
  </div> 

1 个答案:

答案 0 :(得分:1)

通常,您在视图中执行html解析。不确定您是否正在加载视图...目前尚不清楚我们是否正在与登录用户合作。

假设我们没有处理登录用户并且正在调用

 $data['title']= 'Home';
 $this->load->view('include/header',$data);
 $this->load->view('pages/home.php', $data);
 $this->load->view('include/footer',$data);

最简单的方法是将数据转储到视图中并在那里进行布局/解析:

控制器:

$data['title']= 'Home';
$data['rss'] = $this->get_news();
$this->load->view('include/header',$data);
$this->load->view('pages/home.php', $data);
$this->load->view('include/footer',$data);

页/ home.php

<div class="container">
<?php
echo '<ul>';

foreach ($rss as $item)

{
   echo '<li>';
   echo $item['title']; 
   echo '</li>';

   echo '<li>';
   echo $item['description'];
   echo '</li>';

   echo '<li>';
   echo $item['link'];
   echo '</li>';

   echo '<li>';
   echo $item['pubDate'];
   echo '</li>';
}   

echo '</ul>'; 
?>
</div>

controller get_news()

public function get_news()
{
    // Get 6 items from GAA latest news
    $this->rssparser->set_feed_url('http://www.rte.ie/rss/gaa.xml');  // get feed
    $this->rssparser->set_cache_life(30);  // Set cache life time in minutes
    $rss = $this->rssparser->getFeed(6); 
    return $rss;
}