[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
追記:非常におおざっぱな更新履歴
2006年8月8日、以下の機能を修正・追加しました。
・表示件数に10を指定しても1件しか表示されない不具合を修正
・要約を表示できる機能を追加(ただし、非常に不安定)
要約表示機能の詳細については、本文をご覧下さい。
以前、hiroさんの作られたcgiをモディファイして公開したやつのPHP版を作ったので公開します。今回は、from scratchで一から自分でコードを書きました。機能的な点から見た主な変更点は、「ATOMにも対応」、「アメブロのフィードを取り損ねる不具合を修正」、といった感じです。
で、設置方法ですが、まずここからzipファイルをDLしてください。DLしたzipファイルを解凍すると、rss.phpとtest.phpという2つのファイルが出来ます。
解凍された2つのファイルのうち、test.phpのほうは直接の挙動にはまったく関係ないんですが、お使いのサーバのPHPにdomxmlモジュールが組み込まれているかをチェックするものなので、まずはこいつをサーバにアップして、パーミッションを644にして呼び出してみてください。サーバにdomxmlが組み込まれている旨の表示が出ればOK。rss.phpの設定に進んでください。サーバにdomxmlが組み込まれていない胸の表示が出た場合は、ごめんなさい、お使いのサーバではrss.phpは動きません。
さて、rss.phpの設定ですが、任意のエディタでファイルを開いてもらって、行頭の「<?php」を除いた最初の4行が設定項目です。以下にその4行を示します。
$allowed_url="http://www.example.com/"; $new_range=24; $font_color="red"; $new_string="新着";
まず、$allowed_urlでは呼び出し元のURLを設定します。これは、他のサーバからの呼び出しを防ぐためのものなので、絶対に設定してください。設定しないと動きません。また、以前のヴァージョンでは、呼び出し元のURLが複数指定できたのですが、今回は1つしか指定できません(要望があれば複数指定もできるようにします)。
$new_rangeでは新着表示を何時間以内の投稿記事であれば表示させるようにするかを指定します。デフォルトでは24時間以内の記事であれば新着表示がされるようになっています。
$font_colorでは新着表示の文字列の色を指定します。デフォルトでは赤が指定されています。
$new_stringでは新着表示の文字列を指定します。デフォルトでは「New」が指定されています(ゆえに、$new_range、$font_colorともにデフォルトの場合は、24時間以内の投稿記事には「New」が付加されることになります)。
このように設定を終えたrss.phpをサーバにアップして、パーミッションを644にすれば、ひとまず設置は完了です。あとは、
<script language="JavaScript" charset="UTF-8" src="..." />
のような記述を、RSS(ATOM)から取得した記事一覧を表示させたい位置にすればいいのですが、ここでの肝は「src="..."」の「...」の部分で、ここは以下のように記述します。
http://www.example.com/cgi/rss.php?url=...&type=...&num=...
ここで、urlには取得したいRSS(ATOM)のURLを、typeにはRSSかATOMかの指定を(RSSなら「rss」、ATOMなら「atom」を指定します。何も指定しない場合、「rss」がセットされます)、numには表示させたい記事件数を指定します(指定しない場合は1が指定されます)。
2006年8月8日追記: desc=1の指定で記事の要約を表示できるようにしました。ただ、非常に不安定であるので、とりあえずの暫定機能、という感じです。追って修正版をアップしたい、と思います。
と、まあ、こんな感じなのですが、いかんせんやっつけ仕事であり、その上ろくにテストもしていないので、思わぬところでコケる可能性は否定できません。ので、何かあればここのコメント欄にでもご報告ください。
何かPHP版を急いで作ってもらったようになってしまい、申し訳ありません。
早速ダウンロード&設定をしているところです。
アメブロもちゃんと表示されています。
そこで、現在はダウンロードした物をブログ本文の一部(description)も表示する様改造中なのですが、まだうまく表示できていません。。。
また質問させていただくかもしれませんが、その際はよろしくお願いします。
どうもありがとうございました。
ところで、description表示はできましたでしょうか? もし何でしたら、その機能も盛りこんだものを再アップしますが、どういたしましょうか?
一つ質問があるのですが、test.phpにて問題がなかったため
設置を試みたのですが、
called from invarid referer.
と出てしまいます。
<script language="JavaScript" charset="UTF-8" src="<a href="http
といった感じにHTMLへ記述したのですが、何か問題ありますでしょうか。
さてご質問の事項ですが、まず以下の二点をご確認願います。
1) $allowed_urlの設定は間違いないか
2) スクリプトが動いてるサーバは変数$HTTP_REFERERを取得可能な仕様になっているか
2に関してはサーバがapacheであれば間違いなく取得できるのですが、そうでなければごくまれに取得できない場合もあるようです。
また、スクリプトrss.phpの設置場所がルートディレクトリ直下であると、invalidの表示が出てしまう、という事例があるようですが、当方ではちょっと再現しない事例なので、もしkonyさんがスクリプトをルートディレクトリ直下に設置されている場合、たとえばscriptなどのディレクトリを作成し、そこに設置して試してみてください。
ご迷惑をおかけしますが、よろしくお願いします。
まず、サーバで$HTTP_REFERERが取得出来るか確認してみます。
.php自体はルート直下でなく、3階層目くらいに設置してあるので、恐らく$HTTP_REFERERの部分かなと思います。
有難う御座いました。
これでうまくいく、と断言はできませんが、よろしければ再度rss.zipをDLしてお試しください。
使っているサーバは@Niftyの専用サーバです。
色々調べていたんですが、@Niftyは色々とクセがあるみたいで大変のようですね・・。
先ほど、新しいVerのrss.phpを設置させて頂いたところ
1件分、表示を確認することが出来ました。
<script language="JavaScript" charset="UTF-8" src="<a href="http
というような表記をしており、"num=10"で表示件数を10件にしているのですが、実際に表示されるのは1件です。
また、一つお聞きしたいのですが、【$allowed_url】の部分はそのHPのトップページのアドレスでも問題ないのでしょうか。"<a href="http
トップページと実際に設置してるディレクトリを指定する場合と両方やってみましたが、表示は1件分のみの状態でした。
あと、勝手に想像して【desc=1】とか入れると概要が入るのかと思ってましたが、表示されませんでした(当たり前っすね
色々なサイトを見てて、numとかdescとかは結構共通してたので、これ自体が特定の単語か何かで
これをrssから拾ってきて出力してるのかな〜とか思ってました。
プログラムのことは殆ど分からないのですが、この辺りは少し調べてみて表示出来る様に挑戦してみようかなぁとか無謀にも思ってます。
私から見ると、ソースを見ても殆ど意味不明な暗号が
並んでいるようにしか見えないのですが、htmlのタグや
英語で解読可能な部分を見てると、漠然と
「こんな感じで動いているのかな?」とかほんっっのチョッピリだけ分かったような・・分からないような・・。
という感じでソースを眺めてます。
また、表示件数を10件にしても1件しか表示されない件についても、ごく単純なバグでしたので、早速修正しました。こちらについてもお詫びします。
記事のサマリー表示について、一応その機能を実装しました。ただ、UTF-8の何らかの制御文字がJavaScriptのパーサとぶつかっていて、JavaScriptの終端文字を殺してしまう、という致命的な症状が確認されていますので、様子を見ながらお使いください。
最後に、ぼくの書いた拙いコードであれ、何か実際に動くコードを解析したり、またはちょっとした機能を追加することほど、コーディング能力の向上に資することはありません。ぜひ、色々といじり倒し、konyさん好みのものに仕立て上げてください。楽しいですよ。
ぱぱっと追加出来ちゃうあたりが凄いですね。
私も色々といじってみて何か面白いものが出来ましたら
ご連絡したいと思います。
まだまだチョコチョコいじってみて
自分の思った通りの文字を出すとか、そんなレベルですが
それでも楽しいものですね〜。
で、元記事に書き忘れたのですが、konyさんの独自拡張版ができたあかつきには、どうぞご自由にご自身のページ等で配布なさってください。
それでは、また何かありましたら遠慮なくご質問ください。
ただ、テーブル内に表示させているのですがテーブル枠のサイズが決まっている為長いタイトルは折り返して表示されてしまいます。
これを何とかタイトルを20バイトまで表示とか、10文字まで表示とかにする方法と言うのはあるんでしょうか?もしお教えいただけるようでしたらよろしくお願いいたします。
たぶん、一両日中にはコードの改訂版か、もしくは、改造のためのインストラクションを提供できることと思いますので、よろしくお願いします。
ソース44行目の"$title_array[$i]->get_content()"を
mb_substr($title_array[$i]->get_content(), 0, 切り出したい文字数)
もしくは
substr($title_array[$i]->get_content(), 0, 切り出したいバイト数)
と置き換える。
たぶん、以上の方法でいけるのでは、と思うので、お試しください。
とりいそぎ。
早速ありがとうございます、"$title_array[$i]->get_content()"をsubstr($title_array[$i]->get_content(), 0, 20)に変えてみたのですが、タイトル部分がsubstr(Object->get_content(), 0, 20)となり取得できません。
こちらで提示させていただいたコード、当方の環境では想定された動作を示しました。もう一度トライしていただいてだめな場合は、$title_array[$i]->get_content()を、たとえば$entry_titleなどの変数に代入後、それにsubstrをかましてみてください。
なお、書き換えたスクリプトをいちおう以下にアップしておきます。
<a href="http
ご迷惑をおかけしますが、よろしくお願いします。
ソースのほうは一部分ミスがったので切り出したい文字数でタイトルを表示することが出来るようになりました。
ところがブラウザによっては動作が違う事があるみたいで、
**********&#65533;&#65533;[2007/04/06 20
**********&#65533;[2007/04/06 20
**********[2007/04/06 20
**********&#65533;&#65533;[2007/04/05 18
**********&#65533;&#65533;[2007/04/05 16
**********[2007/04/05 16
*********&#65533;[2007/04/05 16
*********&#65533;&#65533;[2007/04/05 15
や&#65533;&#65533;の部分が/a>となり日付までもがリンク対象になってしまいます。&#65533;&#65533;がついていない行はタイトルのみがリンク掛かってるます。
これは何が悪いんでしょうか?よろしくお願いします。
(<a href="http
<a href="http
STANさん報告の不具合は、たぶんsubstrによって切ってはならないバイト区切りで文字を切ってしまっており、それが周囲の文字と干渉しているものと思われますが、とりあえず取得するタイトルが日本語である場合、substrではなくmb_substrを使うことで問題が回避できるかもしれません。
また、詳しくは、使用ブラウザやOSなど、関連する情報が必要です。もう少し詳しい問題発生状況をお知らせください。
mb_substr($title_array[$i]->get_content(), 0, 21)にした状態で表示の具合は下記のURL画像のとおりです。
<a href="http
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
音
雑
虫
技術
『スペクタクルの社会』を読む
ドゥルーズ講義録
電波
趣味の数学
趣味のゲーデル
『プリンキピア・マテマティカ』を読む
自己紹介もどき
ブログペット俳句
芸術一般
言語ヲタ
お客様
GRE CS
留学
Boing Boing
映画
ちょっといい話
かなりダメな話
魂の叫び
哲学と数学
論文
引用
「いい」とも「ダメ」とも言いがたい話
悲喜こもごも
証明論
ポエム
書物への呪詛
言わずもがななことではあるけれどときに忘れてしまうこと
何か無駄なことをしよう
日々
趣味の勉強
夢
ブログの記事
翻訳
勉強
不眠
文房具
ライフハック
育児
thayashi#ucalgary.ca
(#を@に置換してください)
このブログで紹介したことのある本をランダム表示。
このブログで紹介したことのある音をランダム表示。