| PHP-Čtečka RSS |
|
|
|
| Zhlédnutí: 2370 | ||||||||
| Napsal filbar | ||||||||
| Úterý, 04 září 2007 | ||||||||
| Aktualizováno ( Úterý, 28 srpen 2007 ) | ||||||||
|
V prvním díle nového seriálu o programování ve velmi populárním jazyku - PHP se podíváme na to, jak si bez velké námahy a znalosti RSS vytvořit velmi výkonnou RSS čtečku, pomocí jedné volně přístupné třídy, která zvládá všechny verze RSS a Atom a k tomu si dokáže poradit i s různými kódováními. StaženíTato třída nese název do češtiny přeložný jako jednoduchý koláč-SimplePie a ke stažení je k dispozici na stejnojmenné adrese tedy simplepie.org. V době psaní článku byla nejaktuálnější verze 1.0.1. Po rozbalení archivu dostaneme k adresář s několika podadresáři. Přičemž potřebovat z něj budeme pouze jeden soubor, který se jmenuje simplepie.inc. Tento soubor je nutné zaincludovat souboru/ů použité RSS čtečky. PoužitíProtože se jedná o PHP třídu je nutné nejprve vytvořit její objekt, což provedeme pro PHP typicky voláním: $rss = new simplepie(); Poté již ke třídě přistupujeme přes proměnnou $rss. První věcí, kterou je nutné rozhodnout je jestli využijeme cache, kterou čtečka disponuje a jestli ano, tak kde se má nacházet její adresář. Pokud cache nezakážeme, je explicitně povolena. Postup pro zprovoznění cache je: $rss->enable_cache(); $rss->set_cache_location(/cache'); U cache lze ještě určit po jakou dobu se má uchovávat. Přepsaní výchozí hodnoty 3600 sekund(1 hodina) zajistíme metodou set_cache_duration() s parametrem, který určí počet sekund. Pomocí druhé metody je určen adresář, kde se má nacházet cache. Jestliže cache v naší RSS čtečce používat nechceme zakážeme jí pomocí metody enable_cache() s parametrem false: $rss->enable_cache(false); Následujícím krokem je určení URL, kde se nachází RSS, které si chceme na naších strákách zobrazovat. Toto zajistí metoda set_feed_url(url). Před zobrazením je nutné čtečku inicializovat a nastavit korektní znakovou sadu, což učiníme následujícím kódem: $rss->init(); $rss->handle_content_type(); Nyní se již konečně můžeme dostat k samotnému obsahu žádané RSS. Dostaneme se však prozatím pouze k základním informacím z RSS jako je název stránky RSS a odkaz na ní: $rss->get_title(); $rss->get_permalink(); Rovněž dokážeme zobrazit i obrázek, jestliže je součástí URL. Pro jeho správné zobrazení ještě lze využít metod pro zjíštění jeho správné výšky a šířky: $rss->get_image_url(); $rss->get_image_height(); $rss->get_image_width(); $rss->get_image_title(); Poslední metodou(get_image_title) jak lze vydedukovat podle názvu zjistíme název obrázku pro jeho umístění do atributu alt tagu image. Tělo RSSAbychom mohli konečně pracovat se samotným tělem RSS feedu je nutné nejprve zjistit kolik položek obsahuje a následné vytvoření nového objektu představujícího feed: $rssmax = $rss->get_item_quantity(); for ($r = 0; $r < $rssmax; $r ++) { $feed = $rss->get_item($r); ... } Inicializaci a práci s feedem je vhodné umístit do smyčky. Na místa tři teček umístíme metody, které si dále probereme. Autora článku zjistíme logicky pojmenovanou metodou get_author() Ovšem po jejím použití ještě nemáme samotné jméno, vytvořili jsme pouze objekt reprentující autora. Jméno získáme metodou get_name() aplikovanou na vytvořený objekt: $author=$feed->get_author(); $author->get_name(); Stejný postup musíme aplikovat i pro získání kategorií článku v RSS, jestliže je součástí exportovaného feedu. Nejprve tedy pomocí metody get_category() vytvoříme objekt a pak metodou get_label() aplikovanou na nový objekt získáme kategorie: $category=$feed->get_category(); $category->get_label(); Dále lze získat čas formátovaný buď podle php funkce date(get_date()), nebo podle strftime(get_local_date()). Obě metody získají stejný čas, jsou odlišeny pouze použitým formátovacím řetězcem. Samozřejmě potřebujeme i titulky článků a odkazy na články, bez nich by nám RSS nebylo k ničemu. Metody nesou stejný název jako ty pro práci s celou RSS: $feed->get_title(); $feed->get_permalink(); Asi se nám také bude hodit ukázka článku, případně článek celý, jestliže jsou provozovatelé serveru tak velkorysí. Ukázku získáme metodou get_description() a celý článek get_content(). Další možnosti Tím však použití této třídy nekončí. Můžeme si nechat vygenerovat URL pro odkazování na nejznámější servery nabízející URL jako google, nebo Yahoo, případně pro použití v RSS čtečkách. Lze použít i opačný postup tedy umožnit vytvoření odkazu pro přidání na známe odkazové servery jako Del.icio.us, nebo Digg.com. Pokud není server v předpřipravených metodách k dispozici, je připravená i obecná metoda, takže v tomto směru nejsme vůbec ničím omezeni. I když dosud představené funkce jsou jistě dostačující, stále to není vše co máme k dispozici. Tato třída umožňuje i odebírání multimediálních RSS, neboli podcastů a nabízí k tomu velké množství metod, pomocí kterých si i tento typ RSS lze přízpůsobit. Toto ale není cílem tohoto článku, to nechám na vašem zkoušení. Velmi dobrou dokumentaci naleznete na domovských stránkách projektu. Příklad Článek zakončíme příkladem jednoduché čtečky RSS: <?php include_once '/simplepie.inc'; $rss = new simplepie(); $rss->enable_cache(); $rss->set_cache_location('/cache'); $rss->set_feed_url(http://www.linpro.cz/index.php?option=com_rd_rss&id=2&feed=RSS2.0); $rss->init(); $rss->handle_content_type(); $title = $rss->get_title(); if (isset($title)) { echo "<h2><a href=\"".$rss->get_permalink()."\">".$title."</a></h2>"; } $rssmax = $rss->get_item_quantity(); for ($r = 0; $r < $rssmax; $r ++) { $feed = $rss->get_item($r); $item = $feed->get_title(); $author=$feed->get_author(); $date=$feed->get_date(); $itemdes = $feed->get_description(); if (isset($item)) { echo "<h4><a href=\"".$feed->get_permalink()."\">".$item."</a></h4>"; } if (isset($author)) { echo "<p>".$author->get_name()."</p>"; } if (isset($date)) { echo "<p>$date</p>"; } if (isset($itemdes)) { echo "<p>$itemdes</p>"; } } ?>
Powered by !JoomlaComment 3.22
3.22 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved." |
||||||||
| < Předch. |
|---|