InterWikiでもアンカーへのリンクが使いたい

  • ページ: BugTrack
  • 投稿者: reimy
  • 優先順位: 普通
  • 状態: 完了
  • カテゴリー: 本体新機能
  • 投稿日: 2003-04-19 (土) 11:59:33
  • バージョン:

メッセージ

エイリアスでは

[[ほげほげ>ページ名#anchor]]

という書き方ができるようになったけど、InterWikiでは

[[ほげほげ:ページ名#anchor]]

とは書けない。

#も%23にエンコードされてしまうのが理由。#をエンコードしないで出力できれば…

official:質問箱


  • こんな感じでしょうか。 -- ぱんだ 2003-04-21 (月) 18:21:38
    InterWikiNameのパラメータ部(コロンの後)で、#の後にアンカーらしき文字列だけが続いている場合はアンカーとする仕掛けです。
diff -u -r1.32 make_link.php
--- make_link.php Mar 2003 15:13:02 -0000	1.32
+++ make_link.php1 Apr 2003 09:15:26 -0000
@@ -391,6 +391,8 @@
 //InterWikiName
 class Link_interwikiname extends Link
 {
+	var $anchor = '';
+	
 	function Link_interwikiname($start)
 	{
 		parent::Link($start);
@@ -434,8 +436,14 @@
 	{
 		$arr = $this->splice($arr);
 		
+		$param = $arr[6];
+		if (preg_match('/^([^#]+)(#[A-Za-z][\w-]*)$/',$param,$matches))
+		{
+			$this->anchor = $matches[2];
+			$param = $matches[1];
+		}
-		$name = '[['.$arr[4].$arr[6].']]';
-		$alias = ($arr[2] != '') ? $arr[2] : strip_bracket($name);
+		$name = '[['.$arr[4].$param.']]';
+		$alias = ($arr[2] != '') ? $arr[2] : $arr[4].$arr[6];
 		
 		return parent::setParam($page,$name,'InterWikiName',$alias);
 	}
@@ -444,7 +452,7 @@
 		global $script; //,$interwiki_target;
 		
 		$r_name = rawurlencode($this->name);
-		return "<a href=\"$script?$r_name\">{$this->alias}</a>";
+		return "<a href=\"$script?$r_name{$this->anchor}\">{$this->alias}</a>";
 	}
 }
 // BracketName
  • InterWikiのパラメータ部に#を書くことが必要なサイトはないことが断言できれば、今すぐにでもCVSに取り込むんですが、ちょっと自信ない… :) 。 -- ぱんだ 2003-04-21 (月) 18:22:58
    • WikiNameに#が使えるWiki(PukiWiki 1.3以前)などへ飛ぶときは副作用が出ます(kawaraさんとこで確認しました)が、これは致し方ない。-- reimy 2003-04-22 (火) 15:40:04
  • むちゃくちゃ便利になりました(heart) -- reimy 2003-04-21 (月) 21:10:56

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2003-05-22 (木) 01:16:40
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.193 sec.

OSDN