DigiLoog

PC関係の事なら何でもいけるそんな処

xoops用pukiwiki(xpwiki)でリンクを別ウィンドウで開く方法

2011年06月03日(金) - 17:04 | カテゴリ: Linux

元のやり方はこちら。だけど、←だと改造箇所が微妙に違くて別窓リンクができない。
以下の方法だと、[[タイトル:+http://~/]]で別窓リンク可能になる。
ちなみに、今回の方法ではInterWikiの別窓リンクは行わない(自分は必要ないのでやらなかった)

[注1] xpwikiは導入済みである事


[注2] 下ので見づらい人は、見やすく編集したWiki版をどうぞ

# cd [XOOPS_TRUST_PATH]/modules/xpwiki/class
//編集する前にバックアップを作成しておく
# cp make_link.php make_link.php-
# chmod 400 make_link.php-
# chown root.root make_link.php-
//ファイルを編集する
# vi make_link.php

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(1) URLsで検索をかけて、以下の部分を変更する
クラス名は『XpWikiLink_url extends XpWikiLink
メソッド名は『function get_pattern()
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(        # (3) url
(?:(?:https?|ftp|news)://|mailto:)[w/@$()!?&%#:;.,~’=*+-]+
)

(        # (3) url
(?:(?:+?https?|+?ftp|+?news)://|mailto:)[w/@$()!?&%#:;.,~’=*+-]+

)
に変更

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(2) URLsで検索をかけて、以下の部分を変更する
クラス名は『XpWikiLink_url extends XpWikiLink
メソッド名は『function toString()
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
$img = ($this->is_image)? ' type="img"' : '';
return '<a href="'.$this->name.'"'.$title.$rel.$class.$img.$target.'>'.$this->alias.'</a>';

$img = ($this->is_image)? ' type="img"' : '';
if (ereg("^(+)(.*)", $this->name, $regs)) {
return '<a href="' . $regs[2] . '" target="_blank" ' . $title.$rel.$class.$img.$target . '>' . $this->alias . '</a>';
}else{
return '<a href="' . $this->name . '"' . $title.$rel.$class.$img.$target . '>' . $this->alias . '</a>';
}
に変更

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(3) i18nで検索をかけて、以下の部分を変更する
クラス名は『XpWikiLink_url_i18n extends XpWikiLink
メソッド名は『function get_pattern()
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(                  # (3) scheme
(?:(?:https?|ftp|news)://|mailto:)
)
([w.-]+@)?        # (4) mailto name
([^/”s]+|/)   # (5) host
(                  # (6) URI
[w/@$()!?&%#:;.,~’=*+-]*
)

(                  # (3) scheme
(?:(?:+?https?|+?ftp|+?news)://|mailto:)
)
([w.-]+@)?        # (4) mailto name
([^/”s]+|/)   # (5) host
(                  # (6) URI
[w/@$()!?&%#:;.,~’=*+-]*
)
に変更

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(4) i18nで検索をかけて、以下の部分を変更する
クラス名は『XpWikiLink_url_i18n extends XpWikiLink
メソッド名は『function toString()
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
return '<a href="'.$this->name.'"'.$title.$rel.$class.$img.$target.'>'.$this->alias.'</a>'.$host;
の箇所を丸々
if (ereg("^(+)(.*)", $this->name, $regs)) {
return '<a href="' . $regs[2] . '" target="_blank" ' . $title.$rel.$class.$img.$target . '>' . $this->alias . '</a>' . $host;
}else{
return '<a href="' . $this->name . '"' . $title.$rel.$class.$img.$target . '>' . $this->alias . '</a>' . $host;
}
に変更

以上を全部書き換えたら、以下の方法でリンクを行ってテストをしてみる
なお、今回は別窓リンクをしない場合でも正常に動くかを確かめる為、両方の方法でテストを行っている
[[google:http://www.google.co.jp/]]
[[google:+http://www.google.co.jp/]]
できたら完了。おつかれさま。
ほかにもモジュールを追加する方法やら様々な方法があるみたいだが、
一度ファイルを編集すれば『+』を追加するだけで別窓リンクができるので、コッチの方が楽。





  • 応援中

    はじめるセカイの理想論 -goodbye world index-