こんな感じになってますか?私はindex.phpにコードを記述し,同じ階層においているのでちょっとごちゃごちゃしてますが。
─┬/cache(707or777)
├/extlib ──── Snoopy.class.inc
├/Images ──── 星座の画像ファイル
├rss_cache.inc
├rss_fetch.inc
├rss_parse.inc
├rss_utils.inc
├uranai.php(後述)
└index.php
次に,index.phpへの記述です。(多分)一般的だと思われる表示方法を書いてみます。ppBlogを利用されている方はこのとおりにすると,blogの左上に飛び出して表示されてしまいます。ppBlog用のコードは…また後で書きます。
で,一般的な方法ですが。表示させたいところに書き直しています。注意!!例えば uranai.php とかいう名前でも付けてファイルを新規に作成し,以下のコードをズラズラと書きます。7/3 19:35更に追加。下のコードの赤い部分がそうです。
<?
require_once 'rss_fetch.inc';
$url = 'http://fortune.livedoor.com/xml/rank_astro12.rdf';
$rss = fetch_rss($url);
$search = array('牡羊座','牡牛座','双子座','蟹座',
'獅子座','乙女座','天秤座','蠍座',
'射手座','山羊座','水瓶座','魚座');
$replace = array('aries.jpg','taur.jpg','gemini.jpg','cancer.jpg',
'leo.jpg','vir.jpg','lib.jpg','sco.jpg',
'sagit.jpg','capri.jpg','aqua.jpg','pis.jpg');
$fortune = '<div style="text-align:center;">';
$i=1;
foreach ($rss->items as $item ) {
$title = mb_convert_encoding(substr($item[title/],10),"EUC-JP","auto");
$link = $item[link/];
$description = mb_convert_encoding($item[description/],"EUC-JP","auto");
$titleimg= str_replace($search,$replace,$title);
$fortune.=' 第'.$i.'位: <a href="'.$link.'" target="_blank"><img src="Images/'.$titleimg.'" title="'.$title.' : '.$description.'" style="vertical-align:top;" /></a><br />';
$i++;
}
$fortune.='
</div><div style="padding:10px 10px 0 0;text-align:right;">Copyright <a href="http://www.livedoor.com/rss/" target="_blank" title="この占いの著作権は全てlivedoorに帰属します">Livedoor(RSS)</a><br />and Thx(original) <a href="http://www.drk7.jp/MT/archives/000447.html" target="_blank" title="rss占いpluginの原作者,drkさん">Drk7jp</a><br /></div>';
print $fortune;
?>
ふぅ。<と>は半角に直してくださいね。解説はこの後。とりあえずあげます。
…さて再開します。
気が変わりました。先に表示方法を全部書いておきます。
uranai.phpを作成したらindex.phpと同じ階層にアップし,index.php中で表示させたい場所に
<? include("uranai.php");?>
で呼び出せば完了です。
今思ったのですが,なんかこのエントリ,3columnでは見づらいですね,非常に。他のスタイルに変更されて読んで頂いたほうがよいかもしれません。
で,先ほどのコードの解説です。
まず,最初の3行。
require_once 'rss_fetch.inc';
$url = 'http://fortune.livedoor.com/xml/rank_astro12.rdf';
$rss = fetch_rss($url);
これはmagpierssを利用するときのおまじないみたいなものです。$rssには表示させたいrssファイルのurlを入れます。rssのバージョンには0.9,1.0,2.0,atomとオールラウンドに対応しています。
次に,$searchと$replaceは何をしようとしているかというと,画像を表示させる際に占いランキングのrssのtitleから星座名を取得し,それを対応する画像のファイル名に変換するためのリストを作っているわけです。ですから,当然$searchに書く星座の順番と$replaceの画像ファイルの順番を一致させておかないとしし座なのにてんびん座の画像が出てきたり,おかしなことになりますよ。
$fortuneのstyleで表示位置を真ん中に設定しています。これはleftでもrightでもお好みでどうぞ。
$iは"第○位"を表示させるための変数です。
で,その次の行の
foreach ($rss->items as $item ) {
から
}
の間でrssのitemセクションの情報を繰り返し取得し,その都度表示させる作業をしています。
rssファイルを見ると,channelセクションとitemセクションがあると思いますが,このchannelセクションの内容を取得するには$rss->channel[ /]を使います。例えば$aにchannelセクションのtitleを代入したいときは
$a=$rss->channel[title/];
とします。
$titleは星座名を取得しています。mb_convert_encording関数で文字コードをeucに変換しています。お使いの文字コードにあわせて適宜変更してください。あと,substr関数で"第○位: "の先頭10バイト分を取り除いています。
$linkは占いのリンクページですね。
$descriptionは占いの詳しい内容です。私は画像にマウスを乗せると内容を表示させるようにしているので。
$titleimgで星座の名前を対応するファイル名に置き換えています。
その次の行でリンク付きの画像を表示させています。この場合は縦に並びます。横に並べたい方は最後の<br />を削除してください。"第○位"を画像の縦位置中央に表示させたい方はvertical-alignをmiddleに。画像下に合わせたい方は同じくbottomに変更されてください。
リンクさせたくない人は<a …>と</a>の部分を削除し,<img … />だけにしてください。
$i++;
で$iの値を一つ増やしています。これで次の表示は"第2位"となるわけです。rssでは"第01位"とかなっていて,このゼロが気に喰わなかったので(笑)こんな面倒な方法をとっています。
再び登場する$fortuneは著作関係の表示です。どう表示しても構わないので,必ず表示したほうが良いと思われます。
最後に
print $fortune;
で一連の情報を表示させると。こんなところでしょうか。
いい加減な性格のnaoKのことですので,どこか間違っている可能性大です。容赦なくツッコンで下さい。ご質問も受け付けます。
ppBlogを利用されている方は,初めにも書きましたがこれでは正常に表示できません。リクエストがあればまたエントリ書きますのでご遠慮なくどうぞ。
それにしてもよく書いたなぁ。今迄で一番長い記事ですね,多分。よく頑張った,自分。偉いぞ,自分。
続き »