- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2016-05-14T18:32:58+09:00","default:nowsky","nowsky")
#author("2016-05-14T18:40:39+09:00","default:nowsky","nowsky")
*PukiWiki別窓リンク [#h0b68a2b]
-[[DigiLoog元記事>+http://www.ns-lab.org/digiloog/2011/06/article_607/]]
PukiWikiの通常リンク方法では同窓リンク(『target="_blank"』オプション無し)となるが、それを別窓リンク(『target="_blank"』オプション有り)にも対応させる方法。
[[ココ>+http://pukiwiki.sourceforge.jp/dev/?BugTrack%2F730]]にも色々と書いてあるが、やる事が多いのと自分では解りにくかったので他の方法を模索。
下みたいな感じでリンクをページを書くと、リンクが出来る様にPHPファイルを一部修正する。
-リンク方法
通常リンク方法 → [[ns-lab>http://www.ns-lab.org/]]
別窓リンク方法 → [[ns-lab>+http://www.ns-lab.org/]]
-リンク見本
LEFT:
|962|c
|通常リンク方法 → [[ns-lab>http://www.ns-lab.org/]]&br;別窓リンク方法 → [[ns-lab>+http://www.ns-lab.org/]]|
~
*編集ファイル [#peb0043e]
編集するファイルは、''『[PukiWiki]/lib/make_link.php』''ファイル。
基本的には以下に書いてある方法で出来るが、PukiWikiのバージョンによっては書き換える内容を変更する必要がある。...かも?
~
*編集箇所 [#yf094e02]
&size(16){&font(b){1. [class Link_url extends Link()] - [function get_pattern()]};};
-書き換え前
function get_pattern()
{
$s1 = $this->start + 1;
return <<<EOD
(\[\[ # (1) open bracket
((?:(?!\]\]).)+) # (2) alias
(?:>|:)
)?
( # (3) url
(?:(?:https?|ftp|news):\/\/|mailto:)[\w\/\@\$()!?&%#:;.,~'=*+-]+
)
(?($s1)\]\]) # close bracket
EOD;
}
-書き換え後
function get_pattern()
{
$s1 = $this->start + 1;
return <<<EOD
(\[\[ # (1) open bracket
((?:(?!\]\]).)+) # (2) alias
(?:>|:)
)?
( # (3) url
(?:(?:\+?https?|\+?ftp|\+?news):\/\/|mailto:)[\w\/\@\$()!?&%#:;.,~'=*+-]+
)
(?($s1)\]\]) # close bracket
EOD;
}
----
&size(16){&font(b){2. [class Link_url extends Link()] - [function toString()]};};
-書き換え前
function toString()
{
if (FALSE) {
$rel = '';
} else {
$rel = ' rel="nofollow"';
}
return '<a href="' . $this->name . '"' . $rel . '>' . $this->alias . '</a>';
}
-書き換え後
-書き換え後 [PHP ~5.6.*]
function toString()
{
if (FALSE) {
$rel = '';
} else {
$rel = ' rel="nofollow"';
}
if (ereg("^(\+)(.*)", $this->name, $regs)) {
return '<a href="' . $regs[2] . '" target="_blank" ' . $rel . '>' . $this->alias . '</a>';
}else{
return '<a href="' . $this->name . '"' . $rel . '>' . $this->alias . '</a>';
}
}
-書き換え後 [PHP 7.0.*~]
function toString()
{
if (FALSE) {
$rel = '';
} else {
$rel = ' rel="nofollow"';
}
if (preg_match("/^(\+)(.*)/", $this->name, $matches)) {
return '<a href="' . $matches[2] . '" target="_blank" ' . $rel . '>' . $this->alias . '</a>';
}else{
return '<a href="' . $this->name . '"' . $rel . '>' . $this->alias . '</a>';
}
}
~
*Fix [#ga225105]
そうすると、[[URLの先頭に+をつけるリンクを作成する>#xa2bcafc]]事によって、別窓リンクが可能になる。
また、今回の改良はその他文字装飾系プラグインと同時使用する事も可能。