カテゴリ:カスタマイズ プラグイン改造

変更箇所のまとめ

  • アンカー (ページ名#アンカー) に対応させる
  • URLエンコードの方式を変更
  • URLを相対パスにする
  • 短縮URLに対応させる

変更の詳細

アンカーに対応させる

ページ名を指定する際にアンカーも指定できたら便利かなーと思ったので追加してみる。
元々Pukiwikiの自作プラグインにアップされてた方にはこの機能があったらしい。
あとついでに1.5.2の仕様に合わせて細部を変更する。

まずは渡された引数をページ名とアンカーで分離する。

 	$args = func_get_args();
+	// ページ名とアンカーを分離。
+	$args = explode('#',$args[0]);

ページ名と一緒にアンカー名も(一応)エンコード。

 	// ここまで来たら、alias 許可。現在の 'page' の表示要求は arg[0]に跳ばす。
-	$jumpto = rawurlencode($args[0]);
+	$jumpto = urlencode($args[0]);
+	$aname = urlencode($args[1]);

このとき、Pukiwiki 1.5.2の仕様に合わせrawurlencodeからurlencodeに変更。

最後にアンカー指定の有無によって出力するURLを変更する。

 	// alias のジャンプ処理実体
-	header('Location: ' . $script .'?'. $jumpto); // HTTP
+	if($aname) header('Location: ' . get_base_uri() .'?'. $jumpto .'#'. $aname); // HTTP
+	else  header('Location: ' . get_base_uri() .'?'. $jumpto); // HTTP

ここでもPukiwiki 1.5.2の仕様に合わせ、$script(絶対パス)を$get_base_uri(相対パス)に変更する。

これでアンカーを指定した場合は、ページ遷移後に指定した位置へと移動してくれるようになる。

移動先のURLを短縮URLにする

Pukiwiki1.5.2向けURL短縮ライブラリの導入が前提。

ページ名をURLエンコードする部分を、以下のように変更する。

 	// ここまで来たら、alias 許可。現在の 'page' の表示要求は arg[0]に跳ばす。
-	$jumpto = urlencode($args[0]);
+	$jumpto = get_short_url_from_pagename($args[0]);

そして、上記関数を使用した場合はURLに既に"?"が含まれた状態になるためecho部分を変更する。

 	// alias のジャンプ処理実体
-	if($aname) header('Location: ' . get_base_uri() .'?'. $jumpto .'#'. $aname); // HTTP
-	else  header('Location: ' . get_base_uri() .'?'. $jumpto); // HTTP
+	if($aname) header('Location: ' . get_base_uri() . $jumpto .'#'. $aname); // HTTP
+	else  header('Location: ' . get_base_uri() . $jumpto); // HTTP

質問や指摘などあればどうぞ

最新の10件を表示しています。 コメントページを参照

  • ありがとうございます。うちのwikiに導入させて頂きました。元祖aliasが死んでたので助かりました。他の導入プラグインの例もたいへん参考になります…大感謝です! -- ぬぺぺ 2021-05-27 (木) 06:02:46