Here I come, there I am.

CakePHP и RSS feed без магии

at 12:05 by nofearinc
Category: CakePHP, PHP

 

CakePHP е много удобен framework за повечето ми проекти, но повечето неща, свързани с т.н. 'automagic', често не сработват като хората при мен.

Тук включвам неща като потребителския мениджмънт и RSS-а.

Наложи ми се да пусна RSS над един новинарски сайт. В момента фийда се намира на site/news/feed - без разширение, стандартен XML, RSS 2.0 версия.

Направих само 3 основни корекции:

  1. метод в News_Controller
  2. нов layout за feed-овете
  3. view за метода, което пълни кутийките

В News_Controller добавяме функционалност за feed:

function feed() {
		$this->layout = 'feed_layout';
		$all_news = $this->News->find('all', array('limit' => 10, 'order' => 'News.news_id DESC'));
		$this->set('all_news', $all_news);
	}

 

Във views/layouts създаваме feed_layout.ctp - шаблон, който ще използваме за RSS-а:

<?php
	header("Content-type: text/xml");
	echo "<?xml version='1.0' encoding='UTF-8'?>\n"
?>
<rss version="2.0">
  <channel>
    <title>Заглавие на CakePHP проекта</title>
    <link>http://example.com/</link>
    <description>Последни новини от нашия проект</description>
    <?php echo $content_for_layout; ?>
  </channel>
</rss>

 

И във views/news създаваме друг feed.ctp , в който ще итерираме съдържанието:

<?php foreach($all_news as $news):?>
    <item>
      <title><?php echo $news['News']['title']; ?></title>
      <link><?php echo $html->url('/news/view/'. $news['News']['news_id'], true); ?></link>
      <description><?php echo strip_tags($news['News']['excerpt']); ?></description>
      <pubDate><?php echo $news['News']['publish_date']; ?></pubDate>
      <guid></guid>
    </item>
<?php endforeach;?>

Ръчно и благополучно без Automagic в CakePHP. :)

 

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • MySpace
  • Slashdot
  • Technorati
  • TwitThis
del.icio.us Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati ReadMe.ru Dobavi.com Dao.bg Lubimi.com Ping.bg Pipe.bg Svejo.net Web-bg.com

Сходни постове:

  1. CakePHP и свързани select-и с AJAX Наложи се
  2. Колко от вас работят с CakePHP? Един интер
  3. CakePHP - администрация, Auth, Acl и привилегии В CakePHP
  4. Невероятно, но факт - 48ч без PC   Таз

Related posts brought to you by Yet Another Related Posts Plugin.

Comments

Leave a Reply