トップに戻る  / 一覧 最終更新 単語検索

[ パソコン用表示 | スマホ用表示 ]


[[参拾萬.jp>FrontPage]] > [[PukiWikiのカスタマイズ]]  > &color(#ff0000,#ffff99){''リンク先URLを別窓で開く''}; 

*リンク先URLを別窓で開く [#wa4e9c0c]
→ http://www.ns-lab.org/wiki/?PukiWiki%2F%E6%94%B9%E8%89%AF%2F%E5%88%A5%E7%AA%93%E3%83%AA%E3%83%B3%E3%82%AF
-こちらを参照
→ [[nowsky/PukiWiki/改良/別窓リンク>http://www.ns-lab.org/wiki/?PukiWiki%2F%E6%94%B9%E8%89%AF%2F%E5%88%A5%E7%AA%93%E3%83%AA%E3%83%B3%E3%82%AF]]

*俺の更なる改良 [#b12876e7]
- 俺は,&color(#ff0000){『URLを"+"を付けると同窓,付けないと別窓』};と設定した。(→ [[参拾萬.xyzの掲示板(+http://300000.xyz/bbs/)>+http://300000.xyz/bbs/]]のみ同窓,他は別窓。)
- http:// で始まるリンクには,[[このアイコン→>http://300000.xyz/pukiwiki/image/external_link.gif]]が付くようにした。
- 俺は,&color(#ff0000){『''URLの先頭に"+"を付けると同窓,付けないと別窓''』};と設定した。(上のリンク先とは逆の設定!)
- URLの先頭に"+"を付けずにリンクした箇所には,[[このアイコン→>http://300000.xyz/pukiwiki/image/external_link.gif]]が付くようにした。

**編集ファイル [#q685bcf6]

+まず,''[PukiWiki]/image/''フォルダ に''external_link.gif'' 画像ファイル([[コレ→>http://300000.xyz/pukiwiki/image/external_link.gif]])を入れておく。
+''[PukiWiki]/lib/make_link.php''ファイルを,以下のように編集する。

*** [class Link_url extends Link()] - [function get_pattern()] [#f5cc51cb]
-書き換え前
 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;
     }

*** [class Link_url extends Link()] - [function toString()] [#u5eeefa8]
-書き換え前
 function toString()
 {
     if (FALSE) {
         $rel = '';
     } else {
         $rel = ' rel="nofollow"';
     }
     return '<a href="' . $this->name . '"' . $rel . '>' . $this->alias . '</a>';
 }
-書き換え後
 function toString()
 {
     if (FALSE) {
         $rel = '';
     } else {
         $rel = ' rel="nofollow"';
     }
     if (ereg("^(\+)(.*)", $this->name, $regs)) {
         return '<a href="' . $regs[2] . '" ' . $rel . '>' . $this->alias . '</a>'; # +が付いていてもURLと認識するおまじない
     }else{
         return '<a href="' . $this->name . '" target="_blank" ' . $rel . '>' . $this->alias . '<img src="./image/external_link.gif"></a>'; # そうでなければ勝手にURLと認識
     }
 }

**リンク方法 [#h9f046a7]
-別窓にするリンク方法(通常の外部リンク,アイコン付き) → [例] http://300000.jp/
-別窓にしないリンク方法 → [例] +http://300000.jp/
-アイコン付きの,別窓で開くリンク(通常の外部リンク)の例 → http://300000.jp/
-アイコンを付けず,同窓で開くリンク方法の例 → +http://300000.jp/
 Tips:
 「別窓にしない」かつ「+を表示させない」 → [[http://300000.jp/>+http://300000.jp/]]
 「アイコンを付けず,同窓で開く」が「+を表示させない」 → [[http://300000.jp/>+http://300000.jp/]]