[php] wyświetlanie RSS na stronie internetowej

Podziel się:   Facebook   Google+   Twitter   GG   E-mail  

Prosty i funkcjonalny skrypt PHP wyświetlający kanał RSS dowolnej strony internetowej.

Dodatkowo kod JavaScript do wyświetlania RSS na stronach z systemami CMS (PHPfusion, Joomla), blogami, forami dyskusyjnymi, itp.

 
INSTALACJA SKRYPTU NA SERWERZE:
1. Rozpakuj skrypt i przenieść folder RSS do głównego katalogu na FTP.
2. Nadaj prawa dostępu (chmod) 777 na folder RSS.
3. Na stronie internetowej umieść kod:

<!-- ?limit=8 // ile wyświetlić linków
     &limit_zn=30 // ile znaków w 1 linku
     &u=https://webowiec.net/blog/feed/ // adres URL do kanału RSS //-->
<script type="text/javascript" src="/rss/php_js.php?limit=8&limit_zn=30&u=https://webowiec.net/blog/feed/"></script>

4. Stylizacja CSS: linki umieszczone są jako lista <ul class=”RSSlink”> z poszczególnymi pozycjami/linkami jako <li>. Zobacz: jak używać RSS

Poniżej szczegółowe HOW-TO wraz z komentarzami.

W pierwszej kolejności ustalamy i filtrujemy zmienne przekazywane do skryptu PHP:

// $_GET[u] - adres URL do kanału RSS
if (empty($_GET[u])) die('wprowadz adres rss!');
$_GET[u] = urldecode($_GET[u]);
$url_p = @parse_url($_GET[u]);
if (empty($url_p[host])) die('bledny adres RSS!');

// $_GET[limit] - limit wyświetlanych pozycji/linków RSS
$ile_url = (int)preg_replace('/^0-9/i','',$_GET[limit]);
if (! ($ile_url>0 & $ile_url<=10)) $ile_url = 10;

// $_GET&#91;limit_zn&#93; - limit znaków w linku
$limit_zn = (int)preg_replace('/^0-9/i','',$_GET&#91;limit_zn&#93;);
if (! ($limit_zn>0 & $limit_zn<=200)) $limit_zn = 0;
&#91;/php&#93;


W kolejnej części musimy zapewnić funkcjonalność skryptu jako JavaScript:
&#91;php&#93;
// wyświetlanie skryptu php jako javascript
header("Content-type: text/javascript; charset=UTF-8");
&#91;/php&#93;


Teraz pora na funkcję pobierającą o zapisującą kanał RSS lokalnie w folderze RSS:
&#91;php&#93;
// pobierz i zapisz źródło RSS
	function get_zrodlo($url){
		$url_md5 = md5($url);
		if ( is_file($url_md5.'.tmp') ) {
			if ( (time()-filemtime($url_md5.'.tmp'))>60*60 ) { 
			 	unlink($url_md5.'.tmp');
				get_zrodlo($url);
			} else {
				$r = file_get_contents($url);
			}
		} else {
			$r = file_get_contents($url);
			file_put_contents($url_md5.'.tmp', $r);
		}
		
		return $r;
	}

Następnie doczepiamy funkcję przetwarzającą pobrane żródło RSS na tablicę PHP:

// parser RSS
        function rss_to_array($tag, $array, $url) {
                $doc = new DOMdocument();
               // $doc->load($url);
		$doc->loadXML(get_zrodlo($url));
                $rss_array = array();
                $items = array();
                foreach($doc->getElementsByTagName($tag) AS $node) {    
                        foreach($array AS $key => $value) {
                                $items[$value] = $node->getElementsByTagName($value)->item(0)->nodeValue;
                        }
                        array_push($rss_array, $items);
                }
                return $rss_array;
        }

Na koniec uzupełniamy skrypt poleceniami wyświetlającymi linki w postaci kodu JavaScript:

        $rss_tags = array(
                'title',
                'link',
                'description',
        );
        $rss_item_tag = 'item';
        $rss_url = $_GET[u];
        
        $rssfeed = rss_to_array($rss_item_tag,$rss_tags,$rss_url);

        $i=0;
	echo 'document.write("<ul class=RSSlink>");'."\n";
        if (!empty($rssfeed)) foreach ($rssfeed as $v) { if ($i>=$ile_url) break;
		$i++;	
		if ($limit_zn>0) $t = substr($v[title], 0, $limit_zn).'...';
		else  $t = $v[title];
		echo 'document.write("<li><a target=\\"_blank\\" rel=\\"nofollow\\" href=\\"'.$v&#91;link&#93;.'\\" title=\\"'.$v&#91;title&#93;.'\\">'.$t.'</a></lu>");'."\n";
	}
	echo 'document.write("</ul>");'."\n";

Zamykamy skrypt PHP, zapisujemy w folderze RSS, następnie ustawiamy chmod 0777 na folder RSS.
To wszystko! 😉

Powiązane artykuły

Kurs css

  • Kurs CSS dla niecierpliwych [cz 1/2]

    Co to jest CSS, po co go używać, jak go używać.. CSS - stylizowanie różnych elementów HTML, inaczej mówiąc: wizualizowanie/nadawanie odpowiedniego wyglądu strony www. Zaczynając kurs…

  • Kurs CSS dla niecierpliwych [cz 2/2]

    Kontynuacja przyspieszonego kursu dla niecierpliwych. Część 1/2 - Kurs CSS dla niecierpliwych 1/2 Zakładam, że znasz lub zapoznałeś/aś się już wstępnie z podstawami HTML, wiesz do czego…