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:
[html]
[/html]
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:
[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[limit_zn] - limit znaków w linku
$limit_zn = (int)preg_replace('/^0-9/i','',$_GET[limit_zn]);
if (! ($limit_zn>0 & $limit_zn<=200)) $limit_zn = 0;
[/php]
W kolejnej części musimy zapewnić funkcjonalność skryptu jako JavaScript:
[php]
// wyświetlanie skryptu php jako javascript
header("Content-type: text/javascript; charset=UTF-8");
[/php]
Teraz pora na funkcję pobierającą o zapisującą kanał RSS lokalnie w folderze RSS:
[php]
// 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;
}
[/php]
Następnie doczepiamy funkcję przetwarzającą pobrane żródło RSS na tablicę PHP:
[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;
}
[/php]
Na koniec uzupełniamy skrypt poleceniami wyświetlającymi linki w postaci kodu JavaScript:
[php]
$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(“
- “);’.”\n”;
- ‘.$t.’“);’.”\n”;
}
echo ‘document.write(“
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(“
“);’.”\n”;
[/php]
Zamykamy skrypt PHP, zapisujemy w folderze RSS, następnie ustawiamy chmod 0777 na folder RSS.
To wszystko! 😉