alias.inc.php†
サマリ | 指定したページへジャンプする(≒ページに別名を付ける) |
リビジョン | 1.4 |
対応バージョン | 1.4.7 |
投稿者 | コチ |
投稿日 | |
- 機能
- ページを表示せずに、指定した別のWikiページへジャンプする。
- 目的
- 「ひとつのページに対して複数のページ名をつける」機能を擬似的に実現すること。
- 動作
- ページのconvert時にこのプラグインが呼び出された時点で、引数で与えられたWikiページへのジャンプを要求するHTTPヘッダを送信して終了。クライアント側では元のページは表示されずにジャンプ先ページが表示される。
※相性の悪いプラグインがあるかもしれません。*1
数秒間待ってからジャンプさせたい場合、このプラグインでは原理的に不可能なのでredirectプラグインを使用してください。
掲載先†
こちら:http://elfen.s292.xrea.com/index.php?%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%2Falias.inc.phpに掲載してます。
コメント†
- コチ
何か根本的にやってはいけないことをしているかもしれませんが、勉強のため恐る恐る公開させていただきます。露払いにご協力いただけましたら幸いです。
- 名無しさん
PukiWikiのエイリアスと区別するために、aliasプラグインというよりjumpプラグインといったほうがいいのでは?
- 名無しさん
jumpだと、センスがありませんね。別名ページから見ればjumpでも、別名を付与したい場合に利用するという意味ですから、今のままが適切でしょう。jumpだと、その存在意味が理解し辛いと思います。
- 名無しさん
aliasはすでにあるんだから、ほかの名前をつけるべき。
- 名無しさん
プラグインとしてあるんですか?
- 名無しさん
ほかの名前をつけるべき。自作も大変ですね。命令みたい。
- 名無しさん
このプラグインを記述したページは、プラグインを削除しない限り、二度と修正できない状況となる。ということですか?
- 名無しさん
既存のページにこのプラグインを記述するだけで、簡単に荒らしまくることが可能ですね
- コチ
連続でジャンプできる回数を制限できるようにしました。荒らすことができるのはWikiなので当然だと思って作っています。Wikiの動作に支障が出たり不可逆的な被害が出るようでしたらご報告ください。
- けじゃ
大変便利なプラグインを作成いただきありがとうございます。実は要望がありましてどこから転送されてきたのかをページ内に表示することはできないでしょうか?現在の仕様ではpukiwiki.phpに投げてしまっているので不可能だと思いますが、転送元のページを表示して欲しいと思います。
- 多忙のため対応遅れました。かなり今さらですが、[[aliastrace.inc.php>http://elfen.s292.xrea.com/index.php?%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%2Faliastrace.inc.php]]というのを作りましたのでよろしければ。。 -- コチ
- コチさん、希望していた通りの動作です!ありがとうございました!!(^_^)v -- けじゃ
- 1.4.4に暫定対応しました。 -- コチ
- alias、aliastraceをアップデートしました。変更点は以下の通りです。-- コチ
両方…一部の環境で動作しない問題を回避しました。
alias…プレビューでジャンプしないようにしました。
aliastrace…転送元の編集ページへのリンクを表示するようにしました。
- 探してたプラグインであってよかった!のですが、アンカー対応してなかったのでちょこっといじって使ってます。初書き込み&PHP素人なので作法にあってなかったらごめんなさ><。修正は以下な感じでしました。 -- 名無しさん
57,62c57
< // add start
< list($page_name, $aname) = split('[#]', $dest_page);
< // add by end
< // change start
< //if(!is_page($dest_page))
< if(!is_page($page_name))
---
> if(!is_page($dest_page))
64d58
< // change end
104,107c98
< // change start
< // $url = $script.'?cmd=read&page='.rawurlencode($dest_page).$history;
< $url = $script.'?cmd=read&page='.rawurlencode($page_name).$history."#".$aname;
< // change end
---
> $url = $script.'?cmd=read&page='.rawurlencode($dest_page).$history;
- ちなみに、#alias(ページ名#アンカー名)で飛び先ページのアンカーに飛びます。 -- 名無しさん
- そういえばアンカーに配慮していませんでしたたね (^^;。Ver.1.4で対応しました。 -- コチ
- おぉ!ありがとうございます。早速本家に入れ替えます! -- 名無しさん
- 連続ジャンプ回数制限でエラーがでたときに、aliastrace のように転送元のページへの編集リンクを表示できるとうれしいです。alias ループいたずらをされたときに修正しやすくなるかと思います。ソースを見てないのであれですが、つまりは alias と aliastrace の統合なのかもしれません。alias で引数がない、もしくは回数制限エラーが出た場合 aliastrace の動作になってくれるといいと思います。-- grapse
- あと例えば、alias1 -> alias2 -> alias1 のようにいたずらをされて、alias2 のページを編集して #alias を消したとしても、alias1 のページを参照するとまだ「ジャンプの回数が上限を超えました」エラーがでます。これはどうすればよいのでしょう? -- grapse
- 要望につきましては暇を見て対応します。「ジャンプの回数が上限を超えました」エラーにつきましては手元の環境では再現しませんでしたので、現在頂いている情報では原因はちょっと追っかけられません。 --
- すみません。それが原因だと思っていたのですが、違っていたみたいです。なにが原因か再現できなくてなんともいえないのですが、実はどのページにとばそうとしても「ジャンプの回数が上限を超えました」エラーがでてしまっていました。理由がわからないのでとりあえずほうっておいてください。わかったらまたきます。 -- grapse
- 「別名 リンク」で検索するとここに辿り着くのですが、これでFSWikiのKeyword相当のことって出来ますか? --
- こんにちは :) その機能に(かなり近い意味で)相当するのはもっか開発・検討中の AutoAlias のようですね。 -- henoheno
- AutoLinkが有効であれば同じ目的で使用できますが、擬似的な実装なので別名ページの実体を作成する必要があります。また、外部URLへの自動リンク(ジャンプ)はできないようにしてあります。AutoAliasに対する利点は導入が非常に手軽であることです。 -- コチ
- お答え頂きありがとうございました。う~ん、別名のページを作る必要があるんですね。了解しました。 --
- alias.inc.php使わせていただいています。ありがとうございます。
使っていてひとつできたらいいなと思うことがありますので書かせて頂きます。
このプラグインの現在の仕様だとすべてのページにひとつずつ別名ページを作成すると一覧表示から削除するのが非常に手間です。
一覧には自動的に表示されないようにする、もしくはできればですが、#alias(別名,元ページ)見たいなかたちでひとつのページでいくつも別ページ名の設定ができればなんて考えているのですが…。難しいですか? -- masa
- 「自動的に一覧に表示されないように」というご提案についてですが、pukiwiki.ini.php(の$non_list)を書き換えるような動作はリスクが高いので、申し訳ありませんが実装したくありません。config.inc.phpを使用されれば多少設定修正の負荷が下がるのでは無いかと思います。
「ひとつのページでいくつも別ページ名の設定ができれば~」については意味がすこし解りかねますが、このプラグインの性質上、”別名ページの実体を作成してそこにこのプラグインを記述する”というスタイルからは逃れることができません。ただ、それらを自動で行うツールであれば提供できるかも知れませんので検討することにします。 -- コチ
- 意味不明瞭でした。申し訳ありません&worried;
たとえばAというページにBとCという別ページ名を付けたいときにAのページの中でそれを指定できれば・・・ってプラグインまったく違ってきますね&worried;それができれば一覧に表示されることも無くなると思いまして。
ご検討ください。 -- masa
- ・・・それであればAutoAliasの導入を検討されたほうが良いかもしれません。 -- コチ
- 配布先はどちらですか? --
- 通常、上の「掲載先」のリンク先からダウンロードできますが、現在はサーバを一時停止中です。20時間以内に復旧の予定です。m(_ _)m -- コチ
- 転送先にアンカーを指定するとaliastraceが無反応なのですが、なんとかなりませんでしょうか。 --
- ご報告ありがとうございます。確認と修正にしばらく時間をください。 -- コチ
- Ver.1.2でご指摘の不具合を修正しました。 --
- 迅速な対応ありがとうございます。早速更新します! --
- ジャンプさせないオプションについてですが、URLで指定する方法以外に、プラグイン呼び出し時に#alias(ジャンプ先ページ名,noalias)のような感じで指定できれば便利だと思うのですが、いかがでしょうか? -- ユーザ
- すみません、動作イメージがわかないのですが・・・。"PageA"というページに"PageB"と言うページへジャンプするように本プラグインが設置されている場合、例えばFrontPageからPageAへ張られたリンクをクリックするとPageBへジャンプするわけですが、「#alias(ジャンプ先ページ名,noalias)」というのはこの例でどのページに記述するのでしょうか? -- コチ
- pageAです。が、ジャンプさせたくなければ、単にpageBへのリンクを書いておけばいいだけなので、無意味なオプションですね。失礼しました。 -- ユーザ
- ジャンプ元のページのrelated情報をジャンプ先に引き継ぐことは可能でしょうか?ジャンプによってリンクの輪が途切れてしまっているような感じがします。#relatedにページ名を指定できれば解決する問題のような気もしますが。 -- user
- aliastrace.inc.phpの $pagename がHTMLエスケープされていません。is_page()でページの存在チェックは行われていますので、たぶん大丈夫だとは思います(ページ名にタグを含められない)。ですが、念のためエスケープした方がよいかと思います。可能性は低いでしょうが、ページ名にタグを含められるように改造する方もいらっしゃるかもしれませんし・・・。 -- 一応・・・
- ご指摘ありがとうございます。お気づきの通り、そこはis_page()してるので敢えてサニタイズしていません(その必要がありません)。改造した環境での使用については、要望があれば考慮するにやぶさかではありませんが、コードの冗長性とトレードオフになる場合はその限りではありません。というわけで、申し訳ありませんが現時点では修正しない方針とさせて頂きます。m(_ _)m -- コチ