本日のリンク元強化プラグイン(旧)
disp_referrer.rb
機能
文字化けしてしまっている本日のリンク元を直します。 また、アンテナとサーチエンジンの検索結果を分割して表示します(デフォルト時)。 現在、google, Yahoo, Infoseek, Lycos, goo, OCN, excite, msn, BIGLOBE, ODN, DION, AOL, Netscape, Fresheye, AlltheWeb, TOCC/Search, Metcha Search, metacrawler, DOGPILE, NAXEARCH, overture, looksmart, i won_Search, EarthLink, About等に対応しています。
なお、このdisp_referrer.rbはtDiary-1.5.4以降にtDiaryに標準添付されるものとは異なります。 こちらの方が古いのですが、表示結果が標準添付のものと異なるので好みに応じて使っていただければと思い、残しておきます。
必要環境
- tDiary-1.4.x or 1.5.x
- ruby-1.6.x or later
- Uconvライブラリ
- Noraライブラリ
ダウンロード
tDiary-1.5.x向け:disp_referrer.rb
使う場所
特になし
利用方法
disp_referrer.rbはUconvライブラリとNoraライブラリ(に添付のescapeライブラリ)を使います。これらはC言語で書かれており、tDiaryが実行される環境(と同じ環境)でコンパイルする必要があります。
tDiaryが実行されるサーバのroot権限がある場合はそれぞれのライブラリのドキュメントに書いてある手順でインストールすれば良いのですが、root権限を持たない場合(XREA等でレンタルしている場合)は、以下の手順で示すようにローカルでコンパイルしてできあがった.soファイルをindex.rb, tdiary.rbがあるディレクトリにコピーします(ftpを使う場合はバイナリモードでアップロードする必要があります)。
Uconvライブラリのインストール
- Uconvライブラリをダウンロードします(すでにUconvライブラリをインストールしてある場合は再度インストールし直す必要はありません)。
- 展開後README.jaに従ってコンパイルします。以下の手順になると思います。
- ruby extconf.rb
- make
- できあがったuconv.soをindex.rb, tdiary.rbがあるディレクトリにコピーします。
リモートサイトにアップデートする場合は必ずバイナリモードでアップデートしてください。
Noraライブラリ
- Noraライブラリをダウンロードします(すでにNoraライブラリをインストールしてある場合は再度インストールし直す必要はありません)。
- 展開後README.jaに従ってコンパイルします。以下の手順になると思います。
- ruby install.rb config
- ruby install.rb setup
- sudo ruby install.rb install
- rootになれない場合は,lib/web/escape.rbをindex.rb, tdiary.rbがあるディレクトリにコピーします。また,index.rb,tdiary.rbがあるディレクトリにwebというディレクトリを作成して,できあがったext/web/escape_ext/escape_ext.soをそこにコピーします。
リモートサイトにアップデートする場合は必ずバイナリモードでアップデートしてください。
XREAを使っている人向け
yoshimiさんが、uconv.soとescape_ext.soを公開されています。自分でコンパイルできない場合は試してみる価値ありです。 <URL:http://shimoi.s26.xrea.com/ydiary/20030419.html#p01>
disp_referrer.rbのインストール
- disp_referrer.rbをpluginディレクトリに置きます。
リモートサイトにアップデートする場合は必ずテキストモードでアップデートしてください。
一覧の表示順序の変更
本プラグインはデフォルトで、検索結果の一覧のみを本日のリンク元下部にまとめて表示します。 そうではなくて、標準のtDiaryの表示順序で文字化けを直すだけにするということもできます。その場合は以下の指定をtdiary.confに追加してください。
@options['disp_referrer.old'] = true
また、2.4.0以降で導入された「アンテナを分割表示する」という機能を利用しない場合は、以下の指定をtdiary.confに追加してください。
@options["disp_referrer.no_antenna"] = true
一つの検索エンジン毎に表示する検索結果数の指定
Version 2.3.0より、デフォルトで、1つの検索エンジンにつき、参照数の高いものから10件ずつ検索結果を表示するようになりました。 この数を変更するためには以下の指定をtdiary.confに追加してください。
@options['disp_referrer.cols'] = 3
上記は3件にしたいときです。0を指定すると検索文字列は表示されなくなり、また、-1を指定すると全ての検索結果を表示します。 もちろん、数が多ければ多いほどサーバに負荷をかけますので、レンタルサーバなどで運営している人は少なめに指定した方がよいでしょう。
検索エンジンではないリンク元の表示も変えてしまう
Version 2.2.0から検索エンジンではないリンク元の表示も検索エンジン部分同様の表示ができるようになりました。ただ、ちょっと設定が難しいです(^^;)。
@options["disp_referrer.table"] = [ [["タイトル","リンク元のメインURL"],["URLの正規表現A", "使用する文字列A"], ["URLの正規表現B", "使用する文字列B"]], [["タイトル2","リンク元のメインURL2"],["URLの正規表現2", "使用する文字列2"]] ]
こんな感じです。URLの正規表現、使用する文字列はそれぞれtDiary標準のリンク元置換リストと同様です。 ここでのウリとしては、全く関係のない2つ以上のURLを同タイトルの元にグループ化できることです。ここでグループ化された情報は検索エンジン同様の表示で左側に合計値が出るようになるため、誰のホームページからのアクセスが何件あったかということが一目瞭然でわかります。
以下に、私のメインページとtDiary作者であるたださんのページを例に設定してみます。あくまでも例ですので正規表現に詳しい方はもっとイキな設定を考えるかもしれません。さらにクールな設定方法があったらご一報を(^^;)。
@options["disp_referrer.table"] = [
[["Linuxビボ〜ろく","http://home2.highway.ne.jp/mutoh/bibo/"],
["^http://home2.highway.ne.jp/mutoh/bibo.?(.*)", "\\1"]],
[["(c)SHO'sアンテナ 2nd(たださん)","http://sho.tdiary.net/antenna/"],
["^http://sho.tdiary.net/antenna/?", "\\1"]],
[["Mary日記(たださん)","http://sho.tdiary.net/"],
["^http://sho.tdiary.net.?(.*)", "\\1"]]
]
同じURLを別のグループにしたいときは、上記のSHO'sアンテナ 2nd(たださん)と、Mary日記(たださん)のように、より厳密に指定できる方を先に定義します。
なお、検索エンジンと異なり、使用する文字列(上記例で\\1の部分)が無い場合があります。その場合は、/(スラッシュ)が使われます。
おっと、書き忘れました。これはtDiary標準のリンク元置換リストと併用できます。 ただし、同じ設定があった場合はこちらが優先されます。また、同じ設定は余計なCPU負荷をかけるだけですので標準のリンク元置換リストから削除した方が良いでしょう。
自分でアンテナを追加する
Version 2.4.0から、アンテナについても同様の指定ができるようになりました。
@options["disp_referrer.antenna_table"] = [ ... ]
記述内容は@options["disp_referrer.table"]と同じです。
自分で検索エンジンを追加する
Version 2.3.0から自分で検索エンジン向けの置換を追加できるようになりました。
@options["disp_referrer.search_table"] = [ ... ]
記述内容は@options["disp_referrer.table"]と同じです。
ロボットよけについて
検索ロボットなどからのアクセスでは表示しないようにできます。本プラグインはかなりCPU負荷の高いプラグインですのでこの機能はなるべく使うようにしてください。 デフォルトでは、Google, Goo, Hatena Antennaに対応していますが、それ以外は自分で追加することができます。 tdiary.confに設定を追加します。以下はWgetとWWWCを追加した例です。
@options['disp_referrer.deny_user_agents'] = ["Wget", "WWWC"]
本日のリンク元・アンテナ・検索結果の分離について
各リンク元は以下の条件に基づいて本日のリンク元、アンテナと検索結果に分離されます。
- 検索結果
- デフォルトで用意してある検索エンジンと、@options["disp_referrer.search_table"]で指定されたURLを対象とします。
- アンテナ
-
以下の3つの条件で抽出されます。優先度は上から高くなります。
- デフォルトで用意されているURL(はてなアンテナ)
- @options["disp_referrer.antenna_table"]で指定したURL
- tDiary設定画面のリンク元置換リストに「あんてな」「アンテナ」と書かれているURL
- URL自体に「link-ruby」「a.hatena.ne.jp」「iraira」「ntenna」「/a/」「/tama/」が含まれているURL
- 本日のリンク元
- 上記以外
アンテナなのに本日のリンク元の方に表示されてしまうといった場合は、@options["disp_referrer.antenna_table"]で明示的に指定するか、tDiary設定画面のリンク元置換リストの該当アンテナの名前に「あんてな」「アンテナ」のどちらかを入れるようにすればうまく分割されると思います。
なお、この機能はzundaさんの本日のリンク元もうちょっとだけ強化プラグインを参考にさせていただきました(ってかそのままいただいたとも言う(^^;))。
キーワード:
参照:[tDiary関係]