今までも何度か表示されないことがあったけど、微妙に動いていたGoogle Feed APIがとうとうエラーで表示されなくなり、、
幾つかのクライアントのFeed表示をどうしようかと調べていた中で使えそうなライブラリがあったのでそっちで対応。
PHPが動けばこれでいけそうです。
で、一つphpを用意(get-feed.phpという名前とかにして。)し、中身は下記をペースト。
取得するfeedのURL、件数を指定。
feed.phpの場所は同階層じゃない場合は階層も指定。
<?php
// ライブラリの読み込み
require_once "feed.php" ;
// 取得するフィードのURLを指定(アメブロだとこんな感じ)
$url = "http://feedblog.ameba.jp/rss/ameblo/アメブロID/rss20.xml" ;
// インスタンスの作成
$feed = new Feed ;
// RSSを読み込む
$rss = $feed->loadRss( $url ) ;
// HTML表示用
$html = '' ;
$MAX_feed = 10;// 表示させる件数
$feed_count = 0; $feed = new Feed ; $rss = $feed->loadRss( $url ) ;
foreach( $rss->item as $item ){
if ($feed_count >= $MAX_feed) { break; }
// 各エントリーの処理
$feed_count++;
$title = $item->title ; // タイトル
$link = $item->link ; // リンク
$description = $item->description ; // 詳細
// 日付の取得(UNIX TIMESTAMP)
foreach( array( "pubDate" , "date_timestamp" , "dc:date" , "published" , "issued" ) as $time )
{
if( isset( $item->{ $time } ) && !empty( $item->{ $time } ) )
{
$timestamp = ( is_int( $item->{ $time } ) ) ? $item->{ $time } : strtotime( $item->{ $time } ) ;
break ;
}
}
// 仮に日付が取得できなかったら現在時刻を表示
if( !isset( $timestamp ) )
{
$timestamp = time() ;
}
// 表示
$html .= '<dt>'.date( "Y年m月d日" , $timestamp ) .'</dt><dd><a href="' . $link . '">' . $title . '</a></dd>' ;
}
?>
<?php echo $html ?>後は読み込みたいページのhtmlの記述。
まず、ヘッダでjqueryを読み込む。既に別のライブラリで使ってる場合は不要かも。
ただ、バージョンによってコンフリクトするので、読み込み順、バージョンは注意。
ライブラリの読みこみ。
<!-- rss -->
<script type="text/javascript">
;(function($){
$(function(){
$.get('get-feed.php',function(data){
$('#feed').html(data);
})
})
})(jQuery);
</script>あとは、bodyの中で
<div id="feed"></div>
で読み込ませればOK。
表示スタイルはget-feed.phpの表示部分で変更すればスタイル変更ができます(^^)
表示件数を指定する部分を変更してますが、ここのブログを参考にさせていただきました。
» PHPでRSSやAtomのフィードを取得する方法
» Google Feed API」の代替として「rss-php」でRSSやAtomフィードを取得・表示する