pukiwikiプラグイン/tbsend
表記、そんな感じのものを作ったので、一応公開しておきます。
プラグイン概要 †
pukiwiki に「トラックバックの送信」機能を追加するプラグインです。
インストール方法 †
- 本ページに添付されている下記ファイルをダウンロードし、pukiwiki の pluginフォルダに「tbsend.inc.php」の名前でおいてください。
- pukiwiki 1.4.x 系:
tbsend.inc.php_0.2
- pukiwiki 1.5.x 系:
tbsend.inc.php_1.2
- 参考:pukiwikiノウハウ/1.4系と1.5系の差
- pukiwiki 1.4.x 系:
使い方 †
tbsendプラグインは、インラインプラグインです。
パラメータの仕様は以下の通りです。
&tbsend( <url>[, <text> [, <sent_state>] );
- <url> : トラックバックを送りたい、リンク先のURL
- <text> : 画面表示用代替テキスト。省略可能、省略した場合 <url>をそのまま表示
- <sent_state> : トラックバック送信記録。これはプラグインが勝手に出力するので、利用者は記載しなくてかまいません。
上記のように記載すると、画面上は以下のような表示となります:
左側のリンク部分は、pukiwiki書式で以下のように記載したのと同じ内容です。
[[text>url]]
ボタン部分を押すと、url のページに対するトラックバック送信を行います。
その後、このボタン部分は非表示になります。
※注意
トラックバック送信を行うには、このプラグインが置かれたページに対する編集権限が必要です。
権限がない人物がボタンを押しても送信は行われませんし、ボタンも残ったままです。
通信結果 †
通信した結果は、プラグインの第3パラメータに記述されます。
正常に送信された場合、"_send"と記載されます。
プラグインファイル内の設定と動作の変化 †
トラックバック送信の時間制限 †
トラックバックを送信した場合、一定時間(1分)、次のトラックバック送信を禁止することができます。
PLUGIN_TBSEND_LIMITED_BY_TIMEを'0'以外に設定すること。
この状態で「Send TB.」のボタンを押しても、それは単に無視されます。
この時間経過は「pukiwikiの各ページごと」に計測します。
例えば、ページ 'A' でトラックバックを送信すると、続く1分間、同じページ 'A' からのあらゆるトラックバック送信が禁止されます。この状態でも、別ページ'B'からの送信は行えます(し、その後60秒制限されます)。
技術的な話。 †
送信するデータと pageinfoプラグインとの連携 †
トラックバック送信では4つのパラメータが期待されています。
このプラグインでは、以下のようにこれらを決めています。
- title : このプラグインが記載されているページの pukiwiki ファイル名
- url :このプラグインが記載されている当該ページのURL
- excerpt:このプラグインが記載されているページのwikiテキストの先頭200文字
- blog_name:pukiwiki 内で $page_title で定義されるサイト名称。
ただし、拙作のpageinfoプラグインを導入している場合、titleおよび excerpt は pageinfo の仕様に準じます。
リスク:トラックバックスパムの発信基地となってしまう恐れ †
本プラグインでは『一度送信するとボタンを消す』という仕組みによって、同じURLに対するトラックバックの連打が発生しないようにしています。
また『送信するには編集権限が必要』なため、上記に実例を示している通り、権限がない人間からのトラックバック送信は阻止しています。
ですが wikiシステムの都合上、wikiのいずれかのページを編集できる人間は当該ページを何度も編集することで、このプラグインを何度も記述・トラックバック送信することが可能です。
そのような恐れがある場合、このプラグインの導入を避けることを推奨します。
Ver0.2 では、特定ページからの連続トラックバック送信を時間で制限する仕組みを追加しました。これによって例えば「同じプラグイン記述を複数コピーペーストして、連続して送信ボタンを押す」というような集中的な送信を制限することが可能になっています。
変更履歴 †
- 2017.Feb.27 Ver0.2
- 新規設定 PLUGIN_TBSEND_LIMITED_BY_TIME 追加。
特定ページからトラックバック送信した場合、同じページから連続してトラックバックを撃たないようにするフラグです。
- 新規設定 PLUGIN_TBSEND_LIMITED_BY_TIME 追加。
コメント †
ご意見などがあれば。