トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-plugin/46

ページの作成や編集にはユーザ登録が必要です。

TrackBackPingプラグインv0.2

  • 投稿者: zedosho
  • カテゴリ: 新規
  • 優先度: 低
  • 状態: 提案
  • 日時: 2003年09月04日 10時55分42秒

 内容

FreeStyleWikiにTrackBack機能を付け加えるプラグインです。mttrackback1x互換pingの送信、受信が可能です。

インストール

pluginディレクトリにインストールします。(v0.2よりNet::Trackbackモジュールは使用しなくなりました。)

使用方法

TrackBackPing送信

  1. 管理者としてログインする
  2. pingを送信したいページを表示した後、ページ右上のメニューの「ping」をクリック
  3. ping送信先のURLを入力し、送信ボタンをクリック

TrackBackPing受信

  1. TrackBackPingを受け付けるページに、以下を記入する
{{trackback}}
  1. すると、TrackBack受付用URLが表示されるので、TrackBackを送りたい人はMovableType、及び、互換TrackBackツールを使用して、そのURL宛にpingを送信する
  2. TrackBackPing対象ページに受信したTrackBackの情報が表示される

仕様一問一答

  • pingできるのが管理者だけなのはなぜ?
    • wikiは誰もが編集できるので、適当なことを書かれて勝手にpingを送られてしまうとトラブルが起きることは容易に想像ができます。TrackBack機能を必要とする人は、主にサイト管理者でwiki内の記事についてそれなりの制御ができる人だと思われますので、特に問題ないと思います。
  • ページ作成後、自動pingはしないのか?
    • 本家のMovableTypeのように「下書き」「公開」のような明確な区分がないので、どの時点でページを完成とみれば良いのかは、システム上から判断がつきません。記事が日々追加、更新されるのがwikiの醍醐味ですから、その度にpingを送信するのは相手先に対していささか迷惑であると思います。
  • excerpt(要約)は何が使用されるの?
    • 現状、FreeStyleWiki3.5.0のRSS1.0の出力に則り、一番先頭の見出し部分を要約として使用しています。これが適切であるかどうかは論議の余地があると思われますが、ポリシーが乱立するのはできる限り避けたいと思ったからです。
    • v0.2より、要約としてページ先頭255文字の内容を使用するように変更しました。見出しだけでは要約としてわかりずらいケースが多いからです。文章中にあるwiki独自の記号を取り除いた文章を元に要約を作成します。
  • TrackBackの一覧を編集したいのだけれど。
    • リンク切れ、送信側のミスなどの理由で編集を行いたい場合には、TrackBackの一覧が「TB/(TrackBack受信ページ)」というページ名で保存されていますので、このページを編集してください。
  • TrackBackPingの文字コードはどのように判定しているの?
    • 文字コードの判別については、本家の仕様の中には含まれておらず、日本国内でローカルな仕様が乱立している状態ですので、暫定的に下記のように実装しています。
      • パラメータ「charset」に文字コードの指定があれば、それを使用
      • パラメータ「charset」が指定されていない場合、パラメータ「ie」に文字コードの指定があれば、それを使用
      • 上記のパラメータが指定されていなかった場合、Jcode.pmの自動判定に掛けて、文字コードを判別
    • charset,ieに指定できる文字コードは、euc-jp,shift_jis,utf-8,iso-2022-jpです。
  • TrackBack先のURLが通常のURLと異なるのはなぜ?
    • MovableTypeのTrackBackの実装では、URL中に日本語が使用されることが考慮されていないため、使用することが出来ません。そのため、TrackBack元のページ名から割り出した英数字のみで構成されるIDを使用して、ページを表示するようにしています。
  • TrackBack先の一覧を別ページに表示したいのだけれど。
    • デフォルトでは、TrackBack一覧をTrackBack対象ページにincludeして表示します。別ページに表示する場合には、以下のようにオプションをつけることによって、TrackBack一覧ページへのリンクを貼ることができます。
{{trackback link}}

ファイル構成

  • /plugin/trackback
    • Install.pm
    • PingFormHandler.pm - ping先指定
    • SendPingHandler.pm - ping実行
    • ReceivePingHandler.pm - ping受信時処理
    • TrackBack.pm - パラグラフ処理
    • TrackBackUtil.pm - 共通処理
    • TrackBackGateHandler.pm - TrackBack用リダイレクト処理
  • /lib/Net/
    • TrackBack.pm - 本当にTrackBackに必要なロジックはここ(v0.1のみ)

更新履歴

v0.1→v0.2(2002.09.04)

  • TrackBackPing受信機能を追加。
  • TrackBackPing送信時に文字コード指定を追加。
  • TrackBackPing送信時のexcerpt(要約)を最初に出現する見出しの内容から、先頭より255文字に変更。
  • Net::Trackback.pmの使用を廃止し、独自実装。
  • 日本を含むURLが通らないケースがあるため、TrackBack先に残すURLに独自のIDを使用するよう変更。

v0.1

  • TrackBackPing送信機能を実装。

関連サイト

作者ページ

TrackBack一般

文字コード

 コメント

  • 素晴らしいです。早速ですが、トラックバックのリストを短く表示するオプションを追加してみました。 - Yoshimov (2003年09月05日 18時07分33秒)
*** TrackBack-org.pm	Wed Sep  3 20:21:46 2003
--- TrackBack.pm	Fri Sep  5 17:59:06 2003
***************
*** 61,76 ****
  	#Trackbackページのインクルード
  	my $list = "";
  
! 	if ($wiki->page_exists(&plugin::trackback::TrackBackUtil::trackback_pagename . "/" . $pagename)){
  		if ($option eq "link"){
! 			$list = "[[" . &plugin::trackback::TrackBackUtil::trackback_pagename . "/" . $pagename . "]]\n";
  		}else{
! 			$list = "{{include " . &plugin::trackback::TrackBackUtil::trackback_pagename. "/" . $pagename . "}}\n";
  		}
  	}
! 	return $wiki->process_wiki("!!TrackBack\n") . $buf . $rdf . $wiki->process_wiki($list);
  }
  
  
  ;;;1;;;
  
--- 61,98 ----
  	#Trackbackページのインクルード
  	my $list = "";
  
! 	my $trackback_page = &plugin::trackback::TrackBackUtil::trackback_pagename."/".$pagename;
! 	if ($wiki->page_exists($trackback_page)){
  		if ($option eq "link"){
! 			$list = "[[" . $trackback_page . "]]\n";
! 			$list = $wiki->process_wiki($list);
! 		} elsif ($option eq "short") {
! 		    $list = &short_trackback($wiki, $trackback_page);
  		}else{
! 			$list = "{{include " . $trackback_page . "}}\n";
! 			$list = $wiki->process_wiki($list);
  		}
  	}
! 	return $wiki->process_wiki("!!TrackBack\n") . $buf . $rdf . $list;
  }
  
+ sub short_trackback {
+     my $wiki = shift;
+     my $page = shift;
+     my $buf = "<br>";
+     my $content = $wiki->get_page($page);
+ 
+     while ($content =~ m/(^|\n)\*Title:\s*\[(.*)\|(.*)\]\n\*\*Excerpt:\s*(.*)\n\*\*Weblog:\s*(.*)\n\*\*Tracked:\s*(.*)\n/og) {
+ 	my $name = $2;
+ 	my $url = $3;
+ 	my $ex = $4;
+ 	my $site = $5;
+ 	my $time = $6;
+ 	$buf .= "[ <a href=\"".$url."\" title=\"".$ex."\">";
+ 	$buf .= $name."</a> (".$site.") - ".$time." ]\n";
+     }
+     return $buf;
+ }
  
  ;;;1;;;
  
  • 上記の表示を拝見させていただきました。データとしてTB/に保存して、表示時に展開というのもアリですね。気がつきませんでした。 - zedosho (2003年09月06日 18時49分58秒)
お名前: コメント:
trackback-short-diff-20030905.txt trackback_for_3_5_0_v0_2.lzh

最終更新時間:2007年12月21日 15時43分09秒