IshiiWebのトップページにIshiiWeBlogの更新履歴を表示させたいと思い、色々調べた結果
MagpieRSSが手軽で便利であると分かった。
MagpieRSSはPHPで使えるRSSパーサーである。
(マルチバイト文字も扱えるので日本語も通ります。)
今回参考にさせていただいたサイト
http://www.hyuki.com/yukiwiki/wiki.cgi?MagpieRSS
http://www.lucky-bag.com/archives/2005/05/hot_entry.html
以下の方法は私の環境下でのものです、実行する場合には全て自己責任でお願いします)
①PHPをインストールする。
1.まずはサーバーでPHPが使えるようにルート権限でコマンドを実行する。
# yum install php php-mbstring
2.以下のコマンドでApacheを再起動する。
# /etc/init.d/httpd restart
3.テスト用のPHPスクリプト(/var/www/html/test.php)を記述する。
<?php
phpinfo();
?>
4.http://サーバー名/test.phpにアクセスしてPHP情報が出ればインストール成功。
・PHPの設定は/etc/php.iniで行える。
②MagpieRSSを設置する。
1.以下にアクセスしDOWNLOADからMagpieRSSの最新版(現時点で0.72)を入手。
http://magpierss.sourceforge.net/
2.ダウンロードしたらファイルを解凍する。
3.RSSをパースさせたいページと同じディレクトリに以下をアップロード。
- rss_cache.inc
- rss_fetch.inc
- rss_parse.inc
- rss_utils.inc
- extlib
4.さらにcacheというディレクトリを同じ階層に作成。(パーミッションを777にする)
③PHPスクリプトの記述。(注:PHP書くのは何年かぶりです)
<?php
require_once 'rss_fetch.inc';
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
$url = 'パースしたいRSSのURL';
$rss = fetch_rss($url); $title = $rss->channel['title'];
$title = mb_convert_encoding($title, "UTF-8", "auto");
echo "<font size=¥"6¥">$title</font>¥n";
echo "<ul>¥n";
foreach ($rss->items as $item ) {
$title = $item[title];
$title = mb_convert_encoding($title, "UTF-8", "auto");
$url = $item[link];
echo "<li><a href=¥"$url¥" target=¥"_top¥"> $title</a></li>¥n";
}
echo "</ul>¥n";
?>
私の場合はひとまずこれで出来ました。
見栄えはまだまだだし、日付も取得してみたいので時間がある時にでもコードやCSSでいじってみようと思います。
(以上は自己責任において行ってください)
------------ここまでがMagpieRSSパーサー備忘録の内容------------
宣言したとおり日付(曜日も)を取得してみる、ついでに二日前の更新分までNEWを表示させる。
具体的に加えたのは、赤字の部分で日付(曜日)、青字の部分で新着のNEWを表示させている。
<?php
require_once 'rss_fetch.inc';
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
$url = 'パースしたいRSSのURL';
$rss = fetch_rss($url); $title = $rss->channel['title'];
$title = mb_convert_encoding($title, "UTF-8", "auto");
echo "<font size=¥"6¥">$title</font>¥n";
echo "<ul>¥n";
foreach ($rss->items as $item ) {
$title = $item[title];
$title = mb_convert_encoding($title, "UTF-8", "auto");
$url = $item[link];
$youbi = array(0 => '(日)', 1 => '(月)', 2 => '(火)', 3 => '(水)', 4 => '(木)', 5 => '(金)', 6 => '(土)');
$mday = date('w',$item['date_timestamp']);
$date_str = date("n/d", $item['date_timestamp']);
if ($date >= time() - 3600 * 24 * 7) {
$date_str = "<EM>" . $date_str . "</EM>";
}
$days = 2;
$rssdate = strtotime("$date_str");
$today = strtotime(date("Y/m/d H:i"));
$diff = date("U", ($today - $rssdate))/86400;
if ($days > $diff) {
echo " <div style=¥"float:left;¥"><BLINK><font color=¥"red¥" size=¥"1¥"><B>NEW</B></font></BLINK></div>";
}
echo "<li style=¥"list-style-type:none;¥"><div style=¥"float:right;¥">$date_str$youbi[$mday]</div><a href=¥"$url¥" target=¥"_top¥"> $title</a></li>¥n";
}
echo "</ul>¥n";
?>
ここからはCSSやHTML、PHPをいじって整えてください。
私は<BLINK>でNEWを点滅させたり、CLASS指定で見栄えを整えたりしました。
★MagpieのRSS取得が遅いと感じる場合
rss_cache.incの21行目でRSSをキャッシュする時間の間隔を変更します。
デフォルトでは「var $MAX_AGE = 3600;」となっている。(1時間=3600秒)
(以上は全て自己責任において行ってください)
|