今までも何度か表示されないことがあったけど、微妙に動いていた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フィードを取得・表示する
はじめまして
php(少しの書き換えは出来るが生成する力は無い)超初心者です。
Google api廃止以降、一時はRSS表示をあきらめようかと苦慮していた中
当方の環境にマッチした本サイトのソースコードをほぼコピペで利用させていただいております。
ありがとうございます。
さて本題ですが、「https環境のRSS表示がエラーになる」
自サイトの掲示板をトップページに表示していたのですが、https設定を有効にするとエラー表示になります。(現在、記事を非表示にしています)
他サイトの表示も試みましたが同様の結果となりました。
https環境でも表示できる手立てはございますか
ご教授の程よろしくお願いいたします。
返答が遅くなってしまい、すみません。。
私が担当していたサイトではhttpsでのフィードURLが無かったため、そのような現象はありませんでした。
調べてわかりましたらまた、追記させて頂きます。
お答えにならず、申し訳ありません!
お返事ありがとうございます。
問題発生以来あれこれと調べました結果、サーバー上では表示できるようになりました。
(初心者の見識足らずの故に起きていた問題であったようです)
ローカル(XAMPP)で表示されなかった事と、検索に掛かる「Google Feed API 代替案」のページ全ての例においてhttpのみであった為、ライブラリーのFeed.phpでは無理なのかと思い質問させていただき、お手数を掛ける結果になった事お詫びいたします。
ローカルでは未だエラーのままですがサーバーで表示された事で安堵しています。
ありがとうございました。