という流れにしてみた。
rss取得専用にファイルを分けた理由は、rss発行側のサーバにトラブルがあった場合でもサイトの表示速度に影響がないようにしたかったから。
外部rssを読み込んでjsonpで読み込めるように書き出す処理。rss2.0専用。
以下のソースを rss_get.php という名前で保存。
<?php
header("content-type: application/javascript; charset=utf-8");
$rss = 'http://(rss2.0のURL)';
$data = simplexml_load_file($rss);
$data = $data->channel->item;
echo "callback([";
foreach($data as $d){
$pd = date_parse_from_format("D, d F Y H:i:s O", $d->pubDate);
$pd = sprintf("%s年%s月%s日 %02d:%02d",$pd['year']
,$pd['month'],$pd['day'],$pd['hour'],$pd['minute']);
printf('{"date":"%s", "title":"%s", "link":"%s"},'
, $pd, htmlspecialchars($d->title), $d->link);
}
echo "]);";
ul.rssDataというノードの中にjqueryを使って吐き出してみた。
$(document).ready(function(){
$.ajax({
type: 'GET',
url: '(rss_get.phpのurl)',
dataType: 'jsonp',
jsonpCallback: 'callback',
success: function(json){
for(var e in json){
$("ul.rssData").append('<li><a href="'+json[e].link+'">'+json[e].title+'<br /><small>'+json[e].date+'</small></li></a>');
}
}
});
});