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をタイトル等を取得したときに行うと、結局文字化けしてしまうが、出力直前だと大丈夫っぽい。