#author("2017-08-25T06:34:43+09:00","-","-")
表記、そんな感じのものを作ったので、一応公開しておきます。~
*プラグイン概要 [#w266f04b]
あるページを、他のページの「別名」にするためのプラグインです。
実は pukiwiki 公式の自作プラグインに同名・同意図のプラグインが『あった』ようなのですが、2017/3月時点で入手できないようなので、自作しました。
[[参考:公式ページ aliasプラグイン>https://pukiwiki.osdn.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Falias.inc.php]]
*インストール方法 [#xb4bc2b7]
+本ページに添付されている下記ファイルをダウンロードし、pukiwiki の pluginフォルダに「alias.inc.php」の名前で保存してください。
--[[alias.inc.php>http://tomose.dynalias.net/junk/index.php?plugin=attach&pcmd=open&file=alias.inc.php&refer=pukiwiki%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%2Falias]]
+plugin ディレクトリにある rename プラグインを編集します。~
plugin_rename_get_files() の最初のほうにプラグインディレクトリを参照している部分があります。そこに以下の記載を追加してください。
if (exist_plugin_convert('alias')) $dirs[] = ALIAS_DATA_DIR;
-pukiwiki 1.4.5/ 1.5.1 共通です。
*使い方 [#hd49432b]
別名としたいページに、以下のように記載してください。
#alias(対象のページ)
例えば「ページA」というページに「#alias(ページB)」と記載すると、以後「ページA」を参照しようとすると「ページB」が表示されるようになります。
**パラメータ [#z3a3626d]
パラメータに指定できるのは、wiki内のページ名です。~
ただし、以下のものは禁止されています。
-そのページ自体を指定すると、alias動作はせずにエラー表記されます。~
--例:ページA内に「#alias(ページA)」と書くとエラーになります。
-すでに「他ページの別名」とされているページをした場合もalias動作はせずにエラー表記されます。~
--例:ページAに「#alias(ページB)」と記載されている状態では、どのページに対しても「#alias(ページA)」と記載しても、alias動作はせずにエラー表記されます。~
---別の言い方をすると、『ページA⇔ページB』『ページA⇒ページB⇒ページC⇒ページA・・・』というような反復・ループの原因になるような alias を禁止している、ということです。
*技術的な話。 [#c2e96c5e]
**基本的な仕組み [#bcbefd1d]
php が持っている header 関数を利用しています。~
この関数は、以下のように記載することで <転送先URL> が表示されるというものです。~
header('location: <転送先URL>');
この仕組み上、一度 aliasプラグインを記述してしまうと、そのページを編集するには一手間必要になります:普通のページのように「そのページを表示→メニューの編集ボタン」という操作が行えないため。
これを解決するために、別途 [[aliaslist>pukiwikiプラグイン/aliaslist]] というプラグインを作成していますので、そちらも併用してください。
**反復・ループ対策の仕組み [#uf2ab9f1]
このプラグインでは、管理用のデータを /alias ディレクトリに保存しています。
具体的には、alias プラグイン内で転送OKの条件がそろった時点で「現在のページ名」と同じ名前のファイルを aliasフォルダ内に作成しています。
このファイルを元に、alias プラグインでは「すでにalias定義されている」ページ名を把握しています。
*コメント [#y2208e12]
ご意見などがあれば。
#comment2(below)