ブログの新着記事のリストを表示したいけど、そのページではPHPが使えない。ってときに使えます。また外部のブログのRSSを読み込みたい時に使えます。
まず、PHPで最新の投稿記事をブログのRSSから読み込み、動的な内容に合わせてJavascriptを書き出す。そしてHTMLページからJavascriptで呼出し表示します。
<?php
//読み込みたいXMLのパス
$rssurl = "http://qwerty.work/blog/index.xml?".date( "YmdHis", time() );
$rssdata = simplexml_load_file($rssurl);
//表示件数
$num_of_data = 5;
$outdata = "'<ul>'\n";
for ($i=0; $i<$num_of_data; $i++){
$pubDate = $rssdata->channel->item[$i]->pubDate;
$pubDate = date('Y-m-d',strtotime($pubDate));
$outdata .= "+'<li>'\n";
$outdata .= "+'<small>". $pubDate . "</small> ";
$outdata .= "<a href=\"";
$outdata .= $rssdata->channel->item[$i]->link;
$outdata .= "\">";
$outdata .= $rssdata->channel->item[$i]->title;
$outdata .= "</a>'\n";
$outdata .= "+'</li>'\n";
}
$outdata .= "+'</ul>'";
//↓これがないと書き出したスクリプトをJavascriptとして認識してもらえない
header("Content-type: application/x-javascript");
echo "document.write($outdata)";
?>
上記を呼び出すと以下の内容のJavascriptが書き出されます。(サンプル)
<?php
//読み込みたいXMLのパス
$rssurl = "http://qwerty.work/blog/index.xml?".date( "YmdHis", time() );
$rssdata = simplexml_load_file($rssurl);
//表示件数
$num_of_data = 5;
$outdata = "'<ul>'\n";
for ($i=0; $i<$num_of_data; $i++){
$pubDate = $rssdata->channel->item[$i]->pubDate;
$pubDate = date('Y-m-d',strtotime($pubDate));
$outdata .= "+'<li>'\n";
$outdata .= "+'<small>". $pubDate . "</small> ";
$outdata .= "<a href=\"";
$outdata .= $rssdata->channel->item[$i]->link;
$outdata .= "\">";
$outdata .= $rssdata->channel->item[$i]->title;
$outdata .= "</a>'\n";
$outdata .= "+'</li>'\n";
}
$outdata .= "+'</ul>'";
echo "document.write($outdata)";
?>
これをHTMLから以下のように読みこんで表示させます。
<script type="text/javascript" src="newBlogList.php"></script>
すると以下のように表示されます。