RSS続き

とりあえず今日の作業で変更した部分。
 
スニペット

<?php
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); //文字コード化け対策

$rssrss_base = isset($rssrss_base) ? $modx->config['base_path'].$rssrss_base : $modx->config['base_path']."assets/snippets/rssrss/";


//まずMagpieRSSのモジュールを読み込む
require_once ($rssrss_base . 'rss_fetch.inc');
require_once ($rssrss_base . 'rss_utils.inc');

//次に読み込むRSSの配列を作成する
$mainrss = array ('http://www.xxx.com/index.xml' => 'XXX.com',
'http://d.hatena.ne.jp/m-mitsuki/rss' => '仕事備忘録',
'http://feeds.fc2.com/fc2/xml?host=xxx.blog000' => 'テストブログFC2'
);

//あとで使う配列を規定しておく
$rssarray = array();

//1970年1月1日からの秒数を今の時間で取得
$today = date(U);

//$mainrssを分解してURLと名前に分けて取り出す。このあたりは通常のMagpierssと変わらない。
foreach ($mainrss as $url=>$names){
$rss = fetch_rss($url);
$title = $rss->channel['title'];

foreach ($rss->items as $item ) {
$title = $item['title'];
$urls = $item['link'];
//アイテムの日付を拾う、RSSによって変更する必要あり、if文が必要かも
$date_timestamp = $item[date_timestamp];
$date = Date("Y年m月d日",$date_timestamp);

//出力はここでタイムスタンプとセットで出力
$title = mb_convert_encoding($title,$modx->config["modx_charset"],"AUTO");

$linkstr = "<tr><th align=\"left\" valign=\"top\"><span>$date</span>$names</th><td align=\"left\" valign=\"top\"><a href=\"$urls\">$title</a></td></tr>\n";

//タイムスタンプで配列を作る。
$rssarray["{$date_timestamp}"] = $linkstr;
}
}
//タイムスタンプでkrsort (配列をキーで逆順にソートする)
krsort($rssarray);

//ここから出力
echo "<table cellspacing=\"0\" cellpadding=\"0\">\n";
//20個まで出力したら終了させる
for(reset($rssarray); $key=key($rssarray); next($rssarray)){
echo "$rssarray[$key]";
$count++;
if($count == 20){
break;
}
}
echo "</table>\n";
?>

 
スニペット内にアップロードしたファイルは
/rss_utils.inc
/rss_parse.inc
/rss_fetch.inc
/rss_cache.inc
/extlib/Snoopy.class.inc
 
rss_parse.incはMagpieRSSの最新バージョン(0.72)ではなく、0.61のもの。
うちだけかもしれないが、mb_convert_encodingをタイトル等を取得したときに行うと、結局文字化けしてしまうが、出力直前だと大丈夫っぽい。