Tag: haik Tag: plugin Tag: php
別窓リンクプラグイン
&link(http://haik.oi21.net/index.php?plugin_link);
と記述した場合に、「target="_BLANK"」を指定したリンクにします。
http://haik.oi21.net/index.php?plugin_link
ただし、「?」が含まれるリンクは動作がちょっと変です。上の例になりますが、ここでは、プレビュー中は有効ですが、ページの更新をしたらリンクの部分は単に文字列になりました。この場合、下のようにURLの末尾に&を付けるとリンクとして処理されるようになります。でもこれはリンクの処理が変な気がします。セキュリティ関係の対策でURLを正規表現でフィルタリングしているのでしょうか?
&link(http://haik.oi21.net/index.php?plugin_link&);
とすると動作結果は下になりました。
http://haik.oi21.net/index.php?plugin_link&
ということで、この時のバージョンはHAIKの7.2.1ですが、リンクURLの扱いがちょっと変です。
ファイル名: plugin/link.inc.php
<?php
// PukiWiki - Yet another WikiWikiWeb clone.
// $Id: link.inc.php,v 1.14 2018/07/13 16:58:00 ishimaru Exp $
//
// 2018-07-13 plugin_link_inline
// link another window
//
// usage
// &link(http://hogehoge.co.jp/~sample/);
// → <a href="http://hogehoge.co.jp/~sample/" target="_BLANK">http://hogehoge.co.jp/~sample/</a>
// &link(http://hogehoge.co.jp/~sample/,linkstrings,sitei);
// → <a href="http://hogehoge.co.jp/~sample/" target="sitei">linkstrings</a>
function plugin_link_inline()
{
$args = func_get_args();
$arg = isset($args[2]) ? strtoupper($args[2]) : '';
if ($arg == '') {
$target = '_BLANK';
} else {
$target = $arg;
}
$url = isset($args[0]) ? $args[0] : '';
$str = isset($args[1]) ? $args[1] : '';
$str = $str!='' ? $str : $args[0];
return "<a href=\"$url\" target=\"$target\">$str</a>";
}