www.SAMURAJ-cz.com 

25.04.2024 Marek Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

RSS okénko aneb RSS čtečka (řešeno v PHP)

Pondělí, 24.12.2007 10:31 | Samuraj - Petr Bouška |
RSS čtečka zobrazuje RSS kanál nějakého webu či spíše celé řady webů. Dříve to bývala převážně nějaká aplikace, kterou jsme si nainstalovali do počítače. Dnes nabízí řada webů možnost vytvořit si takovou čtečku u nich na portálu (třeba Google). Ale RSS můžeme využít i trošku jinak a doplnit si svůj web o odkazy na zajímavé články z jiného webu. Tento článek popisuje relativně jednoduchou možnost, jak si za pomoci knihovny lastRSS, doplnit svůj web o okénko s informacemi z jiného webu.

Pozn.: Pokud hledáte článek o vytvoření RSS kanálu pro stránky, tak to je popsáno v Jak vytvořit RSS kanál v PHP.

Hned na začátku se můžete podívat na výsledek, který popisuje tento článek – Samurajovo okénko. A také si můžete stáhnout zdrojové soubory této ukázky v zazipovaném souboru.

Pozn.: Když jsem zveřejňoval tento článek na webu, tak jsem narazil na problém, který jsem pochopil až po prohledávání fóra. Na mém hostingu není povolenou použít funkci fopen na webové adresy ze stejného serveru. Takže nemohu v okénku zobrazovat moje dynamické RSS. Mohu použít (pro fopen) pouze přístup přes souborový systém (kde soubor neprojde PHP processingem), takže jsem exportoval RSS do statického souboru a to se zde zobrazuje. Pokud si stáhnete zdrojové kódy a spustíte třeba na lokálním webserveru, tak by vše mělo fungovat.

K tomuto řešení mne inspiroval český MS TechNet Blog, který vytvořil Microsoft TechNet Window. Pomocí JavaScriptu, který vložíte do svých stránek, se tam zobrazují odkazy na nejnovější tři články. Připadalo mě to jako zajímavý nápad a TechNet Window jsem si do svého webu přidal (najde se tam řada zajímavých informací). Ale vadilo mi několik věcí. Za pomoci JavaScriptu mohou do mých stránek vložit cokoliv. Načítání okénka je pomalé a tudíž prodlužuje načítání mých stránek (Radim Petratur mne ujistil, že se to brzy zrychlí). Neposledně i to, že si nemohu okénko upravit úplně podle sebe (je možné upravit CSS).

Již před nějakou dobou jsem nalezl pěknou knihovnu Last RSS od Vojtěcha Semeckého, která slouží k vytvoření RSS parseru/čtečky. Knihovna funguje dobře a nabízí i možnost kešovat načtené informace, takže se na cílovou stránku nepřistupuje pokaždé, když se zobrazuje stránka s RSS.

Pomocí této knihovny jsem tedy jednoduše vytvořil identické okénkoTechNet Window. Data jsou kešována u mě, takže je zobrazování rychlejší. Zobrazují se nadpisy a odkazy z RSS kanálu, takže mám o něco větší kontrolu nad tím, co se do stránky dostane. A můžu si okno upravit naprosto podle mých představ, aby zapadlo do mého webu.

Pozn.: V mé ukázce jsou okénka dvě. Druhé zobrazuje i popis článku (nebo jeho část).

Kód okénka

Celé okénko je udělané jako funkce, kterou stačí zavolat a okénko se vloží na dané místo stránky. Případně můžeme jako parametr předat adresu RSS kanálu a vytvořit těchto okének více. Okénko je tvořeno obdélníkovým divem, v kterém je umístěn netříděný seznam obsahující odkazy na články.

Při zavolání funkce se nastaví parametry pro Last RSS a vytvoří se jeho objekt. Nejprve se podívá, zda je nastaveno kešování, a pokud ano, tak jestli v ní existují aktuální data. V tom případě se stáhnou data z keše, jinak se připojí na zdroj RSS a získá data odtud (případně uloží do keše). Pak se jen prochází jednotlivé záznamy a zobrazují potřebné atributy.

Pozn.: Při použití keše je třeba vytvořit daný adresář a nastavit na něj práva k zápisu (777).

function showRSSWindow($rssurl = "http://www.samuraj-cz.com/rss/") {
  $rss = new lastRSS;
  // ulozeni stazenych dat do kese, je treba nastavit prava na adresar
  $rss->cache_dir = './temp/';
  $rss->cache_time = 3600;
//  $rss->cp = 'UTF-8';    // kodovani, UTF-8 je defaultni
  $rss->date_format = 'U'; // cas a datum jako timestamp
  $rss->items_limit = 3;   // maximalni pocet vracenych zaznamu
  echo "    <div class='RSSwindow w220'>\n";
  echo "          <a href='http://www.samuraj-cz.com' title='Přejdi na Samuraj-cz.com'><img src='graphics/samuraj-logo.gif' alt='Samuraj-cz.com' width='150' height='20' /></a>\n";
  if($rs = $rss->get($rssurl)) {
    echo "<ul>\n";
    foreach($rs['items'] as $item) 
      echo "          <li><a href='$item[link]' title='{$item['title']}'>{$item['title']}</a></li>\n";
    echo "</ul>\n";
  } else 
    echo "<p>Error: Nepodařilo se připojit ke zdroji RSS.</p>";
  echo "    </div>\n";
}

Pozn.: Pokud se vám líbí můj web, tak budu samozřejmě velice rád pokud umístíte na svůj web okénko s odkazy z mého RSS.

zobrazeno: 20889krát | Komentáře [15]

Autor:

Související články:

RSS - Really Simple Syndication

RSS kanál - moderní a běžná metoda k získávání informací o novinkách na webovém serveru.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

  1. [1] Ondra

    Díky za článek. Super :-)

    Pátek, 20.02.2009 11:20 | odpovědět
  2. [2] Honza

    Ahoj,je to nějak tedy omezené hostingem?Jsou nějaké požadavky?Třeba php5?Děkuji Honza

    Čtvrtek, 05.03.2009 11:33 | odpovědět
  3. [3] Samuraj

    odpověď na [2]Honza: Momentálně mne žádné speciální požadavky nenapadají. Vše je uvedeno v článku.

    Čtvrtek, 05.03.2009 14:00 | odpovědět
  4. [4] Honza

    odpověď na [3]Samuraj: Děkuji za odpověď,a nenapadá Tě,proč mi to na jednom webu jede a na druhém ne?Děkuji Honza

    Čtvrtek, 05.03.2009 16:38 | odpovědět
  5. [5] Samuraj

    odpověď na [4]Honza: No snažil jsem se přemýšlet a snad tam nic není. Využívá se funkce fopen k otevření vzdáleného souboru (RSS), což by snad neměl být problém (viz. moje úvodní poznámka v článku). Mohl by být problém s používáním cache (ukládání údajů do lokálního souboru), tak bych to zkusil bez toho. Vše ostatní jsou běžní věci.

    Sobota, 07.03.2009 20:28 | odpovědět
  6. [6] Bryant

    Mam něco s čim si nevim rady :( ... a to že u prvního článku RSS bych chtěl mít zobrazený popis a u dalších ne... ale nevim jakouv funkcí určim to že u prvního postu to bude tak a udalších zas jinak :( :-(

    Pátek, 31.07.2009 10:41 | odpovědět
  7. [7] Majo

    Ahojte. Neviete mi poradit? Preco to na jednom servery kludne bezi a na druhom nie. Dal som aj 777 a nic. Ako by nechcelo menit rsscache. No na druhu stranu, tam kde to funguje, tak ked rozbalim rsscache tak je tam to co som si stiahol tu a nove co sa zobrazuje tam nie je. :-O Nechapem.

    Čtvrtek, 06.08.2009 16:14 | odpovědět
  8. [8] Samuraj

    odpověď na [7]Majo: Zkusil bych vypnout cachování. Případně, jestli na daném hostingu nejsou omezené některé funkce.

    $rss->cache_dir = '';

    • na komentář odpověděl [9]Majo
    Čtvrtek, 06.08.2009 16:42 | odpovědět
  9. [9] Majo

    ++odpověď na [8]Samuraj:

    Dakujem. Nepomohlo, asi napisem na hosting, ze co nemam povolene. :-(

    Čtvrtek, 06.08.2009 22:27 | odpovědět
  10. [10] Majo

    No napisal som Hostingovej spolocnosti a je to v poriadku. Pytal som sa aj v com bol problem, ale zatial neodpovedali. Dik. ;-)

    Neděle, 09.08.2009 10:30 | odpovědět
  11. [11] Majo

    Caute, neviete preco mi to Hadze po nadpise kazdej novine datum: [01.01.1970] ?

    Pondělí, 10.08.2009 18:10 | odpovědět
  12. [12] Nikd0

    Fatal error: Cannot instantiate non-existent class: lastrss in rss.php on line 3

    Co s tím?

    Středa, 02.12.2009 17:33 | odpovědět
  13. [13] Samuraj

    odpověď na [12]Nikd0: Asi by pomohlo includovat knihovnu lastRSS.php ;-).

    Středa, 02.12.2009 17:39 | odpovědět
  14. [14] gbg

    <?php echo="hello"?>

    Pondělí, 26.09.2011 23:51 | odpovědět
  15. [15] Gucky

    Zdravím, potřeboval bych poradit s RSS čtečkou v PHP. Problém je v tom, že server odkud chci přijimat RSS z fóra vyžaduje na fórum přihlášení. V čtečce co mám jako aplikaci do windows se po zadání jmena a hesla feedy zobrazují, ale v php čtečce nevím jak tu autentizaci provést.

    Úterý, 21.08.2012 11:49 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách