自ページ名のアンカを付けない

自ページへのリンクのスタイルを変更するパッチ - FreeStyleWikiext_linkの方向で
ページ内アンカをつけて自ページ名のスタイルを変更するように変更しましたのでこのサイトにおける下記の記事と挙動は当初の状態と異なります。

 ページ内の自ページ名に対してアンカを付けない変更

文中にページ名の語句が文脈にあわないようなリンクになってしまうことがあります。たとえば表のページに表現と書いたときに表のページリンクがつくなどといったことは避けたいですし、また自ページの文中にそのリンクがあっても通常あまり意味がないのではないかといった部分を変えてみるトライです。結果的に一文字のページ内での文字化けの回避になりました。

ご注意

ページが存在しない場合の「?」をはずしてあるパターンですので自動リンクを使用して、他のページにリンクされていなければページが存在しないという判断で使用することになります。[[リンク先|ページ名]]などと貼ってあるばあいなどは、ページが存在しないサインの「?」が表示されませんので注意する必要があります。(逆に無いページにあえてリンクさせることでそのページを作成したいといった場合の使いかたも便利です。)

キャッシュファイルを一度削除した後、更新されます。

Ver.3.6.4で解消した模様です。
Ver.3.6.4よりも前のキャッシュクリアはこれでいけるようになるようです。
もしくはこちらの修正

コード

ページ内の位置指定のアンカについてはリンクを生かしたいわけで通常のリンクでページ内アンカーに飛べるようになるパッチext_linkを取り込んで処理を変えました。
lib/Wiki/HTMLParser.pmのWikiページへのアンカ部分の449行目付近

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($self->{wiki}->get_CGI()->param('page') ne $page){
   return "<a href=\"".$self->{wiki}->create_page_url($page).(defined($anchor) ? "#$anchor" : '') . '" class="wikipage">' . &Util::escapeHTML($name)."</a>";
  }else{
   if(!defined($anchor)) {
    return &Util::escapeHTML($name);
   }else{
    return "<a href=\"".$self->{wiki}->create_page_url($page). '" id="myself">' . &Util::escapeHTML($name)."</a>";
   }
  }
}

めちゃめちゃ冗長になってしまったのを修正しました。

ライセンス

GPLでよろしいかと。

関連する問題

文中での他ページの一文字のページ名の問題については
Ver3.6.4で解消されたようです。
Ver3.6.3時点のデフォルトでは依然、無理のようです。ここでの変更を入れても新しいページ名が他のページの文中で文字化けが潜む結果となりえるので常に全体をチェックしなければならないのはどうかという部分はあります。思い切って一文字のページ名のアンカを付けないこともできましたがこれはこれで諸々変更が必要になってきます。

上記プラグインですばらしい対応がされました。

ページ内アンカ


anchorext_linkプラグインをインストールした後、移動先に{{anchor 1}}などのようにアンカを貼ります。

ページリンクの書き方はこんな感じになります。


自ページのanchorのテスト

[[自ページのanchorのテスト|自ページ名のアンカを付けない#1]]


他のページのanchorのテスト1

[[他のページのanchorのテスト1|anchorのテスト#1]]

他のページのanchorのテスト2

[[他のページのanchorのテスト2|anchorのテスト#2]]

自ページ名のリンク

自ページ名のリンクをつけるには
自ページのリンク

[[自ページのリンク|自ページ名のアンカを付けない]]

ではリンクされないので、
自ページのリンク

[[自ページのリンク|自ページ名のアンカを付けない#]]
という風に#でクリアします。

あと自ページの$nameにはclass="wikipage"のようにselfpageとかなんとかのCSS参照をつけると色が変えられるはず。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 










































自ページに{{anchor 1}}を貼ってある位置です。

自動リンク