exlink.inc.php Edit

サマリ外部サイトへのリンクに矢印をつけ、遷移する前に中間(リダイレクト)ページを挟む
リビジョン1.4
対応バージョン1.4.7
投稿者Makichan
投稿日2007-10-18 (木) 16:53:03

基本情報 Edit

プラグイン名
exlink
書式
#exlink
オプション
なし

概要 Edit

pukiwiki:自作プラグイン/exlink.inc.phpを機能拡張し、BS-Template様の外部Link確認Scriptの機能を取り込んだものです。
基本的にはプラグイン本体(と矢印の画像ファイル)のみで動作します。
大きく3つの機能があります。

  1. JavaScript?を埋め込む(ブロック型プラグイン)
  2. ページ中の外部リンクを加工する(JavaScript?)
  3. リダイレクタ(コマンド呼び出し)

これらが連携して一連の処理を行います。
2.3.の処理は内部で自動的に行われるので、ユーザは1.を設置するだけでOKです。
機能の重要な部分をJavaScript?で処理しているため、JavaScript?が利用できないブラウザ、JavaScript?が無効な環境では全く機能しません。

ダウンロード Edit

添付ファイルを参照

インストール Edit

コピー Edit

plugin/exlink.inc.php を plugin ディレクトリに、image/external_link.gif を image ディレクトリにコピーしてください。
必要に応じて、skin/js/exlink.js も skin/js 以下にコピーします(後述)
基本はアーカイブを展開したディレクトリ構造をそのままコピーすればOKです。
なお、PukiWikiの標準状態では skin ディレクトリの下に js ディレクトリは存在していないので、必要に応じて作成してください。

組み込み Edit

MenuBar等に設置するか、スキンに直接埋め込むことで動作します。
MenuBar等に設置する場合は、通常のブロック型プラグインの要領で

#exlink

と記述します。
この場合はMenuBarを表示しないページ(ページ一覧等)には適用されません。
スキンに埋め込むには、スキン内の適当な場所(標準のpukiwiki.skin.phpなら86行目の </head> の直前あたり)に以下の行を挿入します。

<?php if (exist_plugin('exlink')) echo do_plugin_convert('exlink'); ?>

スキンに埋め込んだ場合、Wiki内のすべてのページに適用されます。(ヘッダ部分やフッタ部分の、スキンで直接埋め込んだURL等も対象となります)

スキン修正 Edit

PukiWikiのスキンでは、ページ内でのJavaScript?の使用の有無で meta タグの出力を切り替えていますが、MenuBarやSkinで埋め込んだ場合、処理の順番の関係で正しく反映されません。
exlinkを使用する場合は、常にJavaScript?を使用するようにタグの出力方法を変更します。
具体的には、標準のpukiwiki.skin.phpの場合、74行目の

<?php if (PKWK_ALLOW_JAVASCRIPT && isset($javascript)) { ?> <meta http-equiv="Content-Script-Type" content="text/javascript" /><?php } ?>

という行を

<?php if (PKWK_ALLOW_JAVASCRIPT) { ?> <meta http-equiv="Content-Script-Type" content="text/javascript" /><?php } ?>

のように修正します。

pukiwiki.ini.php Edit

exlinkはJavaScript?を使用しますので、pukiwiki.ini.phpでJavaScript?を使用する宣言を行ってください。
155行目付近

// PKWK_ALLOW_JAVASCRIPT - Allow / Prohibit using JavaScript
define('PKWK_ALLOW_JAVASCRIPT', 0);

という行を

// PKWK_ALLOW_JAVASCRIPT - Allow / Prohibit using JavaScript
define('PKWK_ALLOW_JAVASCRIPT', 1);

に変更します。(すでに1ならそのままでかまいません)
これでインストールは完了です。

設定項目 Edit

exlink.inc.php内定数 Edit

exlink.inc.phpの先頭部分にいくつかの設定可能な定数があります。
ここではそれらを解説します。

// --- 外部JavaScriptを利用
//  JavaScriptをプラグイン内部で生成するか外部ファイルにするか
//   空文字列 - ブロックプラグインでJavaScriptを展開
//   JSファイル名 - ブロックプラグインでJSファイルを取り込むタグを生成
//define('EXLINK_EXTERNAL_JS', SKIN_DIR . 'js/exlink.js');
define('EXLINK_EXTERNAL_JS', '');

// --- リンクに付加する画像ファイル
define('EXLINK_IMAGE', IMAGE_DIR . 'external_link.gif');

// 画像のALT文字列
define('EXLINK_ALTMSG', '[外部リンク]');

// --- リダイレクトページ使用
//  1 - する  0 - しない
define('EXLINK_USE_REDIRECTOR', 1);

// --- リダイレクトページのタイトル
define('EXLINK_TITLE', '外部リンク');

// --- リダイレクトページへのアクセスを記録するか否か (空白, 保存Dir) = (OFF, ON) 
// ログ保存ONの時は日毎にログファイルが作られます(但し前日のログをGZ圧縮します)。
//define('EXLINK_LOG_DIR', './linklog/');
define('EXLINK_LOG_DIR', '');

// --- 危険文字列リストファイル
define('EXLINK_RISKYSTR_FILE', './riskystr.pl');
EXLINK_EXTERNAL_JS
JavaScript?をプラグイン内部で生成するか外部ファイルにするかの選択
JavaScript?を外部ファイルとすることの利点は、
1.HTMLソースが小さくなり、JavaScript?ファイルはブラウザのキャッシュが効くためネットワークにやさしい
2.XHTML 1.1 validにしやすい
の2点。逆にデメリットは、
1.プラグインとJavaScript?間のパラメータの受け渡しのためにブラウザに若干の負荷がかかる
という点が挙げられます。まあお好みで。
空文字JavaScript?をプラグインで生成し、HTMLに直接埋め込む(外部JavaScript?ファイルを使用しない)
外部JSファイル名指定されたファイル名の外部JavaScript?ファイルを読み込むタグを生成する。
添付の /skin/js/exlink.js をそのまま利用するなら
define('EXLINK_EXTERNAL_JS', SKIN_DIR . 'js/exlink.js');とすればいいでしょう
EXLINK_IMAGE
リンクに付加する矢印画像ファイル
添付以外の画像を使用したい場合はここを書き換えてください
EXLINK_ALTMSG
画像のALT文字列
EXLINK_USE_REDIRECTOR
リダイレクトページを使用するか否か
0使用しない
1使用する
EXLINK_TITLE
リダイレクトページのタイトル
EXLINK_LOG_DIR
リダイレクトページへのアクセスを記録するログを格納するディレクトリ
ここが空文字の場合はログを記録しません。
EXLINK_RISKYSTR_FILE
リダイレクタにてURL中に怪しい文字列が含まれていないか調査するための、「危険な文字列一覧」のファイルを指定します
ここが空文字、あるいはここで指定されたファイルが存在しない場合は危険文字列のチェックは行われません

処理対象外ホストリスト Edit

exlink.inc.php の56行目付近に以下のようなリストがあります。

	$hskip = array(				// 処理対象にしないドメイン/ホスト
		$_SERVER['HTTP_HOST'],
		'validator.w3.org',
		'jigsaw.w3.org'
	);

ここにホストを追加することで、そのホスト(正確にはURLにこの文字列を含むリンク)を処理対象としません。
通常は1行目の $_SERVER['HTTP_HOST'] だけで充分だと思います。
2行目,3行目はw3.orgのバリデーションサービスでrefererが必要となるため追加しています。
このサービスを利用する予定が無いなら削ってしまって構いません。(ほーーーーーんの少しだけ負荷が減るはずです:-))
レンタルサーバ等で、同一ホストに複数のユーザのWikiが存在する(可能性がある)なら、1行目は 'hogehoge.com/foo/bar' のように、完全に識別できるところまで指定する必要があるかもしれません。

リダイレクタテンプレート Edit

リダイレクトページは内部で固定文字列で自動生成します。
このページは、以下のテンプレートを用意することでカスタマイズできます。

テンプレート名内容
:config/plugin/exlink/template外部サイトへ遷移するためのページ
:config/plugin/exlink/template_bad渡されたURLに何らかの不備がある場合
このテンプレートがない場合は:config/plugin/exlink/templateを使います
:config/plugin/exlink/template_alert渡されたURLに危険文字列が含まれていた場合
このテンプレートがない場合は:config/plugin/exlink/templateを使います

テンプレートは一般のWikiの書式で記述します。

先頭行が'*'で始まる場合は、その行の内容をリダイレクトページのタイトルとして使用します。
このとき、EXLINK_TITLEの設定は無視されます。

テンプレート中に $link という文字列があると、その部分はリンクURLに置き換えられます。
言い換えると、$link が無いとどこにもジャンプすることができません(笑)

ライセンス Edit

GNU General Public License(GPL)

更新情報 Edit

1.4
URLの引渡し方法を変更(2007/10/18)
1.3
PKWK_ALLOW_JAVASCRIPTの設定値に従い機能をDisableするように変更(2007/10/13)
1.2
一般公開(2007/10/10)
1.1以前
どこかでひっそり使われていた模様

コメント Edit

コメントはありません。 コメント/Software/PukiWiki/Plugin/exlink?

お名前:

カテゴリ:PukiWiki:Plugin


添付ファイル: fileexlink_1_4_20071018.zip 645件 [詳細] fileexlink_1_3_20071014.zip 585件 [詳細] fileexlink_20071010.zip 601件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-06-09 Mon 19:50:02 JST (3999d)