MagpieRSSを使ってみた。(MagpieRSS+Smarty習作)
これだけ。
mb_internal_encoding(MAGPIE_OUTPUT_ENCODING) は、いらんかも。
<?php define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); mb_internal_encoding(MAGPIE_OUTPUT_ENCODING); define('RSS_URL', 'http://d.hatena.ne.jp/kidd-number5/rss'); require_once 'rss_fetch.inc'; require_once 'Smarty.class.php'; $rss = fetch_rss(RSS_URL); $smarty = new Smarty(); $smarty->template_dir = SMARTY_DIR . "/template"; $smarty->compile_dir = SMARTY_DIR . "/cache"; $smarty->assign("channel", $rss->channel); $smarty->assign("items", $rss->items); $smarty->display('index.tpl'); ?>
テンプレート(index.tpl)はこんな感じでテキトウに。*1
<h1>{$channel.title}</h1> <dl> {foreach from=$items item=item} <dt><a href="{$item.link}">{$item.title}</a></dt> <dd>{$item.description}</dd> {/foreach} </ul>
これをこんな構成で動かす。(cacheディレクトリは最初はもちろん空。)
│ Config_File.class.php │ index.php │ rss_cache.inc │ rss_fetch.inc │ rss_parse.inc │ rss_utils.inc │ Smarty.class.php │ Smarty_Compiler.class.php │ ├─cache │ %%45^45E^45E480CD%%index.tpl.php │ 7c1ad67cfb1960b93c7a79882cb8fa0e │ ├─extlib │ Snoopy.class.inc │ ├─internals (略) │ ├─plugins (略) │ └─template index.tpl
ポイントは
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
しておくことで、キャッシュとして保存するための文字コードを指定できること。ここでしておかないと、日本語が化けてしまう。
指定されているのはrss_fetch.incのここ。
if ( !defined('MAGPIE_OUTPUT_ENCODING') ) { define('MAGPIE_OUTPUT_ENCODING', 'ISO-8859-1'); }
ちなみにUTF-8ではなくてEUC-JPにしようとしても、rss_parse.incの
var $_KNOWN_ENCODINGS = array('UTF-8', 'US-ASCII', 'ISO-8859-1');
に入ってないのでアウト。
Snoopy.class.incでプロキシ設定
プロキシがある場合はextlibのSnoopy.class.incにて設定する。
ここらへんはSmartyもそうだけど、独自のextendするクラスを作ったほうがいいかもしれない。
あれ?
こちらのブログで、defineしている位置が変な気がする。
http://www.lucky-bag.com/archives/2005/05/hot_entry.html