Apr
14
CakePHP е много удобен framework за повечето ми проекти, но повечето неща, свързани с т.н. 'automagic', често не сработват като хората при мен.
Тук включвам неща като потребителския мениджмънт и RSS-а.
Наложи ми се да пусна RSS над един новинарски сайт. В момента фийда се намира на site/news/feed - без разширение, стандартен XML, RSS 2.0 версия.
Направих само 3 основни корекции:
- метод в News_Controller
- нов layout за feed-овете
- 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.
Сходни постове:
- CakePHP и свързани select-и с AJAX Наложи се
- Колко от вас работят с CakePHP? Един интер
- CakePHP - администрация, Auth, Acl и привилегии В CakePHP
- Невероятно, но факт - 48ч без PC Таз
Related posts brought to you by Yet Another Related Posts Plugin.

















