ページの作成や編集にはユーザ登録が必要です。
通常のリンクでページ内アンカーに飛べるようになるパッチ
- 投稿者: 閉じ込めの壷
- カテゴリ: 新規
- 優先度: 普通
- 状態: 提案
- 日時: 2006年12月29日 17時13分22秒
内容
BugTrack-plugin/195を利用しているときに思ったのですがせっかく設置したアンカーはKeywordsでは使えないのです。
KeywordsにはブラケットによるリンクしかKeywordsに指定できず、このキーワードはこのページのこのアンカーにジャンプしてほしいということはできませんでした。
そこで2重ブラケット内のリンクにアンカーも指定できるようになるパッチを開発しました。(以下に使用例を示します)
[[テスト|テストページ#hoge]]
こうするとテストページのアンカー名「hoge」にジャンプします。BugTrack-plugin/195と一緒にお使いください。
インストール方法
パッチですので、下記に示す指示に従ってソースを修正して頂くことになります。lib/Wiki/HTMLParser.pmの444行目辺り(wiki_anchor関数内)をanchorlink.txtのように修正して下さい。
コメント
- [テストページ]というページにBugTrack-plugin/195でアンカーを設置したとしたとき、このパッチBugTrack-plugin/331を利用せずに[Keyword]でアンカー指定つきURLを登録するには、[Keyword]ページに
*[テスト|./wiki.cgi?page=%A5%C6%A5%B9%A5%C8%A5%DA%A1%BC%A5%B8#hoge]
と書くという方法があります。これで、上記 使用例 とほぼ同様の動作をしますが、Wikiページへのリンクを「外部URL」として認識さているこの方法では、Wiki環境設定項目の「外部URLの処理」によって、リンク先を開く際の挙動が変化します。 - pm (2006年12月31日 23時36分31秒)
- 少々、動作がおかしかったりしたので修正しました。 Wiki::HTMLParser::wiki_anchor() を丸ごと置き換えてください。 - Custom (2007年05月30日 20時29分41秒)
# 以下の不具合を修正 # ・my $anchor = undef; を追加 # ・アンカー文字列などの取得を簡略化 # ・ページ名の無指定(現在表示中ページのアンカーリンク)に対応 sub wiki_anchor { my $self = shift; my $page = shift; my $name = shift; my $anchor = undef; if(!defined($name) || $name eq ''){ $name = $page; } ($page, $anchor) = split(/#/, $page, 2) if($page =~ m/#/); if(defined($anchor) && $page eq '') { return "<a href=\"#$anchor\" class=\"wikipage\">" . &Util::escapeHTML($name) . '</a>'; } elsif($self->{wiki}->page_exists($page)) { return '<a href="' . $self->{'wiki'}->config('script_name') . '?page=' . &Util::url_encode($page) . (defined($anchor) ? "#$anchor" : '') . '" class="wikipage">' . &Util::escapeHTML($name) . '</a>'; } else { return '<span class="nopage">' . &Util::escapeHTML($name) . '</span>' . '<a href="' . $self->{'wiki'}->config('script_name') . '?page=' . &Util::url_encode($page) . '">?</a>'; } }
最終更新時間:2013年04月25日 17時35分04秒