RSS kanál v CakePHP
RSS kanálmi disponuje v súčasnosti každý dobrý web a my si dnes ukážeme, ako môžeme pomocou pár riadkov elegantne vytvoriť takýto kanál s CakePHP.
1. krok – získavame dáta
Jednou z najčastejších využití RSS je informovať užívateľov napr. o nových článkoch na stránkach. Budem predpokladať, že už máme napríklad vytvorený model s názvom Article, pomocou ktorého získame dáta potrebné pre vytvorenie rss kanálu.
Následne si vytvoríme RSS controller a do súboru app/controllers/rss_controller.php umiestníme nasledujúci kód
class RssController extends AppController
{
var $name = "Rss";
var $uses = array('Article');
var $helpers = array('Rss','Xml');
var $layout = 'default';
var $layoutPath = 'rss';
function articles()
{
$this -> set('articles',$this -> Article -> findAll(array('Article.visible=1','Article.publish_up < now()'),null,array('Article.created'=>'desc')));
}
}
2. krok – rss layout
V ďalšom kroku si vytvoríme layout pre náš rss kanál a to vytvorením súboru app/views/layouts/rss/default.ctp a umiestníme do neho nasledovný kód
<?php echo $xml->header(); ?>
<?php echo $content_for_layout; ?>
3. krok – view
Posledným krokom je vytvorenie view pre náš rss kanál. Vytvoríme súbor app/views/rss/articles.ctp do ktorého umiestníme nasledovný kód
<? echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<rss version="2.0">
<? echo $rss -> channel(null,array('title'=> 'Titulok rss','description'=>'Popis rss')); ?>
<?
foreach ($articles as $article)
{
echo $rss -> item(null,array('title'=>$article['Article']['title'],'author'=>$article['User']['name'],'pubDate'=>$article['Article']['created'],'description'=>$article['Article']['intro_text'],'guid'=>'/articles/'.$article['Article']['seo_link']));
}
?>
</channel>
</rss>
Týmto máme náš kanál hotový a jeho ukážku môžete napríklad nájsť aj na tomto blog ako rss kanály
Rád uvítam vaše nápady a pripomienky v diskusii k článku.
Súvisiace články
-
Kategórie
- Tipy a triky (28)
- Články (8)
- Fantom CMS (4)
- Zábava (2)
- Začíname s CakePHP (6)
-
Najčítanejšie články
-
Novinky
-
Seriál o CakePHP na www.debug.sk
15. 10. 2008
Od 7. októbra vychádza nový seriál o CakePHP na serveri zameranom na programovanie s názvom Debug.sk Autorom seriálu je autor tohto webu a kto by mal záujem, môžete daný seriál podporiť jeho prečítaním.
-
-
Nálepky
-
Nedávne komentáre
-
Rss kanály

Komentáre k článku
Nový komentár
Titulok: CakePHP verze
Autor: Jitka aka poLK
Vytvorený: 07. 10. 2007 23:23
Namisto
by jste (se stejnym vysledkem) mel pouzit
Dale mi unika smysl
kdyz je v kodu prikladu pouzit jen jeden model.
Nicmene: protoze v kodu je pouzit RssHelper, predpokladam, ze se jedna o CakePHP 1.2 – v tom pripade lze vyuzit Router::parseExtensions() a RequestHandlerComponent – a potreba extra tridy RssController jen pro RSS feeds razem odpada.
Titulok: RE: CakePHP verze
Autor: Tibor
Vytvorený: 07. 10. 2007 23:43
Nasledovný kód opravený
Nasledovný kód bol kopírovaný z kódu blogu, len som zabudol vymazať zvyšné modely, ktoré v ukážke nepoužívam
Určite by sa to dalo urobiť prostredníctvom Router::parseExtensions() atd. ale myslím si, že každý kód ma v MVC pevne svoje miesto, preto som štandartne vytvoril controller aj pre rss, i keď pripúšťam, že s vyššie uvedenou funkciou by to bolo úspornejšie, ale tých 7 riadkov kódu navyše pre poriadok sa dá prepáčiť :-)
Titulok: aktualizácia článku
Autor: Tibor
Vytvorený: 12. 10. 2007 11:34
Tak došlo k malej úprave článku. V hlavičke sa musí posielať aj kódovanie, inak to môže spôsobovať problémy, čiže do súboru rss/default.ctp treba pridať nasledovný kód
Titulok: Re: aktualizacia clanku
Autor: Jitka aka poLK
Vytvorený: 12. 10. 2007 12:15
To je dan za to, ze nepouzivate preferovane reseni ;) V takovem pripade by vas rss kanal totiz pouzival layout cake/libs/view/templates/layouts/rss/default.cp (nebo vami upraveny v umisteni app/views/layouts/rss/default.ctp), ve kterem je volani
see XmlHelper::header()
Titulok: Re: aktualizacia clanku
Autor: Tibor
Vytvorený: 13. 10. 2007 11:26
Niekedy v buducnosti urcite napisem clanok aj o druhej vami zmienovanej moznosti. Myslim si, ze by tu mala byt o tom zmienka…