Как добавить rss в Code-Igniter

Сегодня рассмотрим как добавить в наш движок на CodeIgniter rss ленту для новостей.

Для этого создаем контроллер feed:
<?php
/**
 * @author allexe
 * @copyright 2010
 */
 
class feed extends Controller
{	
	function feed() {
		parent::Controller();				
	}
 
	function index() {
        $CI = &get_instance(); //Доступ к CodeIgniter
        $CI->load->model('mdl_news');
        $CI->load->model('mdl_nastr');
        $CI->load->helper('xml');
        $data['encoding'] = 'utf-8';
        $data['feed_name'] = 'alllexe.com';
        $data['feed_url'] = 'http://www.alllexe.com';
        $data['page_description'] = 'Kursk IT, Code Igniter, PHP';
        $data['page_language'] = 'ru-ru';
        $data['creator_email'] = 'your mail';
        $num_news = $CI->mdl_nastr->get_nastr_by_name('Новостей в RSS');
        $sort = array('desc' => 'date');
        $news = $CI->mdl_news->getlist(false,$num_news,false,$sort);        
 
        $data['news'] = $CI->mdl_news->getlist(false,$num_news,false,$sort);    
        header("Content-Type: application/rss+xml");
        $this->load->view('rss', $data);
	}	
}
?>

Тут все просто при заходе на наш сайт по ссылке нашсайт/feed, этот контроллер берет из базы последние новости. Количество новостей задается в настройках. Полученные новости передаются в файл вида rss.php. Также передаются служебные переменные, все передается в массиве date.
Содержание rss.php
<?php 
echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
?>
<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/">
 
    <channel>
 
    <title><?php echo $feed_name; ?></title>
 
    <link><?php echo $feed_url; ?></link>
    <description><?php echo $page_description; ?></description>
    <dc:language><?php echo $page_language; ?></dc:language>
    <dc:creator><?php echo $creator_email; ?></dc:creator>
 
    <dc:rights>Copyright <?php echo gmdate("Y", time()); ?></dc:rights>
    <admin:generatorAgent rdf:resource="http://www.codeigniter.com/" />
 
    <?php foreach($news as $one): ?>
 
        <item>
 
          <title><?php echo xml_convert($one['title']); ?></title>
          <link><?php echo base_url().'news/read/'.$one['id'] ?></link>
          <guid><?php echo base_url().'news/read/'.$one['id'] ?></guid>
 
          <description><![CDATA[
      <?= $one['anons']; ?>
      ]]></description>
      <pubDate>
	  <?php
	  $date_arr = explode('.',$one['date']); 
	  echo date('r', mktime(0,0,0,$date_arr[1],$date_arr[0],$date_arr[2]));
	  ?>
	  </pubDate>
        </item>        
    <?php endforeach; ?>    
    </channel></rss>

Чтобы в адресной строке браузера появился значок rss при нажатии на который открывается наша лента новостей, перед закрывающим тегом нужно вставить строку
<link rel="alternate" type="application/rss+xml" title="название_RSS-ленты_вашего_сайта" href="http://адрес_вашего_сайта/путь_и_имя_файла_RSS-ленты.xml" />
Теги:
rss
Добавлено: 21 Мая 2018 07:36:02 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...