ヽ(´ー`)ノヽ(´ー`)ノヽ(´ー`)ノ[ xreaの規約による,xreaの,xreaのための広告スペース ]ヽ(´ー`)ノヽ(´ー`)ノヽ(´ー`)ノ

占いランキング設置方法。

ええと,占いランキングについてはオリジナルのプラグインをdrk7さんが発表されているんですが,Perl言語なんですよね。naoKはこれをphpバージョンで表示しているんですが,sheeさんより設置方法についてリクエストがありましたので書いてみます。

必要なもの。

MagpieRSS for PHP
星座の画像(私はこちらから頂いたものをリサイズしてます。drk7さんオリジナル使用素材はこちら。) なお,星座のファイル名は下に書くコードと同じファイル名を付けてください。"こんなファイル名じゃ気に入らん!!"というひとは適宜変更してください。 php動作可能なサーバ(これ重要。)

まず,magpierss-0.61.tar.gzをダウンロードし,解凍します。それで,rss_xxx.incファイル(4つ)とextlibフォルダ,そしてその中のSnoopy.class.incを適当な場所にアップします。あと,空のcacheという名前のフォルダを作成し,extlibフォルダと同じ階層におきます。 また,画像フォルダも作成し(私はImagesフォルダにしています),その中に画像ファイルを放り込んでこれもアップ。

パーミッションは,cacheフォルダのみ707に変更します。あとは特にいじらなくても大丈夫だと思いますが一応書いておきます。extlibフォルダが755,その他のファイルは644です。

まずはここまで。

もっと読む»

こんな感じになってますか?私は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を利用されている方は,初めにも書きましたがこれでは正常に表示できません。リクエストがあればまたエントリ書きますのでご遠慮なくどうぞ。

それにしてもよく書いたなぁ。今迄で一番長い記事ですね,多分。よく頑張った,自分。偉いぞ,自分。

— posted by naoK at 23:59   [ Web_tips ] Comment [8]  TrackBack [2]

思えば一年前の今日,こんなこと書いてました。
  • と思ったけど,まだblog始めてませんでした…
  • [ 1年前スクリプト by naoK ]

この記事に対するコメント・トラックバック [10件]

Up1. shee time7 — 2004/07/03@00:42:08

homepage今まで何度となくチャレンジして失敗を続けてきた占いランキング表示ですが、 naoK様がついにPH・・・
続き »


2. 櫻 — 2004/07/06@20:23:37

壁|ω=)ノ ppblogでのリクエスト、お願いできますか?

Owner Comment naoK  2004/07/06@22:15:45

> 櫻さん
りょーかいしました!
今日はちと気力がないので週末辺りにでも…よろしいでしょうか?(オドオド

4. 櫻 — 2004/07/07@02:20:06

ゆーっくりで全然構いません(*´∀`)
よろしくお願いたてまつりまする(誰

5. shee — 2004/07/27@22:39:56

遅くなりました・゜゚(>ω<。人)ゴメンチャィ
さきほどやや苦戦しましたが、
設置完了の巻です!!!(*'Д'*)ゞデシ!

修正して上書き保存するとダメダメなので、
新規保存を何度か・・・

改めて、ありがとうございました!!!
ヾ(≧∇≦)〃ヤター

UpOwner Comment naoK  2004/07/28@20:43:01

こちらもどうなることかとヒヤヒヤしながら成り行きを見守っていたんですが,無事文字化けも直ったようで,良かったです。
(文字化け直らないから諦めちゃえ!なんてなってしまったらどうしよう…とか考えてたり。)

7. ぼー — 2004/10/05@10:32:12

はじめまして。
このランキングを設定しようと頑張ってきましたが、どうしても画像が表示されません。ソースをみるとimgタグが
「img src="Images/ー&#65533;焔蠎ァ" title="ー&#65533;焔蠎ァ : 好奇心が旺盛になるとき。…」となっており、星座名の名前変換がうまく行っていないようです。
どうしたらいいでしょうか?

Owner Comment naoK  2004/10/05@12:22:53

ぼーさん、はじめまして。

で、すみません、これを書いた後に占いのRSSが一部変更になりまして、それを修正するのをすっかり忘れていました(汗

$title = mb_convert_encoding(substr($item[title/],10),"EUC-JP","auto");

という部分があると思いますが、この数字の10の部分を9にしてみてください。これで多分大丈夫だと思います。

もしうまくいったら、ぼーさんのHP、是非教えてください。どんな感じのHPなんだろう…ワクワク。
で、もし不幸にもうまくいかない場合はまたご連絡ください。宜しくお願いします。

取り急ぎ。

9. CROQUE★MONSIEUR — 2004/10/05@16:53:55

homepage女の子はみんな占いが大好き(例外もあるが)っつーことで!!! BBSの上に「今日のタロットランキング」を設置してしまいました! Drk7jpさんのサイトで公開されているプラグインの設置を試みましたが、なぜかエラーになってしまうため、設置を断念していました。 するとnaoKさんの配...
続き »


10. ぼー — 2004/10/05@17:11:54

無事設置できました。ありがとうございました。
トラバしました。

私のblogは内容がないので注意してください。

この記事に対する TrackBack URL:

設定によりTB元のページに、こちらの記事への言及(この記事へのリンク)がなければ、TB受付不可となりますのであらかじめご了承下さい。

コメントをどうぞ。 名前(ペンネーム)と画像認証のひらがな4文字は必須で、ウェブサイトURLはオプションです。

ウェブサイト (U):

タグは使えません。http://・・・ は自動的にリンク表示となります

ニコッ ムカッ えーん あちゃぁ ベーッ ラブリー ムンク 汗 ネムー 風邪 グスン はぁと zzz うっ いかり ダッシュ グッ ドクロ ケーキ

     

[X] [Top ↑]