HTMLにRSSを埋め込む
トップページに自分のblogのRSSを埋め込み、新着案内などに利用する場合。
参考サイト:http://i-njoy.net/tips/rss.shtml
DL:http://magpierss.sourceforge.net/
http://www.spencernetwork.org/jcode/
rss.phpを作成する
<html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <?php require_once 'rss_fetch.inc'; require_once 'code_table.ucs2jis'; require_once 'jcode.php'; $url = 'http://www.xxx.co.jp/index.xml'; $rss = fetch_rss($url); $title = $rss->channel['title']; //JcodeConvert($str, $from, $to) $title = JcodeConvert($title, 4, 4); foreach ($rss->items as $item ) { $title = $item[title]; $title = JcodeConvert($title, 4, 4); $itemday = date('Y/n/j',strtotime(substr($item['dc']['date'],0,10))); $itemday = JcodeConvert($itemday, 4, 4); $url = $item[link]; echo "<a href=\"$url\" target=\"_blank\">${itemday} $title</a><br />\n"; } ?> </body> </html>
文字コードは
0.無変換
1.EUC-JP
2.Sift-JIS
3.SO-2022-JP
4.UTF-8
となっている。
次にmagpieRSSの0.61をダウンロード、解凍する。
最新版だと文字化けするので注意。
またjcode_1.35a.zipもダウンロード、解凍する。
できたファイルをアップロードする。
その時のファイル構造は
public_html / index.html (トップページ) │ └ magpie / rss.php │ jcode.php │ code_table.ucs2jis │ rss_cache.inc │ rss_fetch.inc │ rss_parse.inc │ rss_utils.inc │ ├ extlib / Snoopy.class.inc │ └ cache (空フォルダを作成する)
て感じに。
埋め込むのはSSIでもいいのだけれども、HTMLに埋め込む場合は
<!--[if IE]> <iframe src="/magpie/rss.php" width="368" height="80" marginheight="0" marginwidth="0" vspace="0" hspace="0" frameborder="0"></iframe> <![endif]--> <!--[if !IE]> <--> <object type="text/html" data="/magpie/rss.php"> <p>non object</p> </object> <!--> <![endif]-->
とすると、IE・Firefox両方に対してうまくいく。
Firefoxの場合、DIVなどブロック要素内のiframeはうまく働かないようなので、objectタグを使う必要がある。
が、objectタグを使うとIEの表示がアレなので、折衷案としてこういう感じに。
追記:
アメーバブログはRSSにまで広告が入り込む。それを除外する場合。
参考:http://ieha.jp/blog/web/php-%e6%96%87%e5%ad%97%e5%88%97%e3%81%ae%e6%9d%a1%e4%bb%b6%e5%88%86%e5%b2%90/
echo "<a href=\"$url\" target=\"_blank\">${itemday} $title</a><br />\n";
でリンクを書き出す際に、文字列による条件分岐を付け足す。
$str = $title; if (strpbrk($str, 'PR: ')) { echo ""; } else { echo "<a href=\"$url\" target=\"_blank\">${itemday} $title</a><br />\n"; }
これでタイトルに“PR: ”が入った記事を飛ばすことができる。