質問箱/248

カテゴリ
サマリプラグイン内にて、(そのプラグインを呼び出したページではなくて)そのプラグインが記述されているページ名を知りたい。
バージョン1.4rc4
投稿者sha
状態保留
投稿日2003-08-28 (THU) 19:22:33

質問

自作プラグインを作成しています。すこしマニアックな質問です。

質問
プラグイン内にて、(1)「そのプラグインを呼び出したページ名」ではなくて、(2)「そのプラグインが記述されているページ名」を知る方法はありますか?
説明
多くの場合、(1)と(2)は同じページで$vars['page']にて知ることができます。また、プラグインから生成されたボタンなどで呼び出された場合には、$vars['refer']で知ることができます。

ここで、ページAには別のページを読み込む#pcommentのようなプラグインPが記載され、ページBには(自作)プラグインQが記載されていたとします。今、ページAを表示することによって、ページA内へページBと(自作)プラグインQが展開されたとすると、(自作)プラグインQでは、この(1)と(2)は異なり、(1)はページAに、(2)はページBとなります。しかし、実際には$vars['page']にて(1)しか知ることが出来ません。

質問箱248.png

このように別のページを(ほんの一部でも)展開するプラグインとして以下のようなものがあります。

#pcomment
#pcomment(ページB)←(やはり$vars['page']はページAとなる)
#tracker_list
#includesubmenu
#include(ページB) ←(例外的に、$vars['page']はページBとなる)
その他、まだある。

(1)だけでなく(2)も分かると、記載されたページを書き換える(自作)プラグインの場合、非常に助かります。例えば、自作プラグイン/vote2.inc.phpなどでは、&vote2が記述されたページ名を明示的に書くことによって回避していますが、#pcommentなどで展開されるページの名前まで把握しておかないと使えないのでは、とても不便です。是非、(2)も取得したいです。

回答

  • 名無しさん 2003-08-29 (FRI) 09:08:33

    MenuBar内のcounterが、その仕様を逆に利用していたりします。

    • sha 2003-08-29 (FRI) 18:16:54

      なるほど、それはそれで便利ですね。ただ上の話は、(1)と同時に(2)も得る方法はありませんか?という質問ですので、counterに関わる部分の仕様に変更はないかと思います。

  • sha 2003-08-31 (SUN) 22:24:50

    やはり、別のページを展開するコマンドに、$vars['gotten_source']とかに読み込んだページ名をセットしてもらうしか手がないのでしょうか?でも、もし複数のページを読み込んでいたりした場合はどうするのか?とか、呼出されたプラグインが本当にそのページに記載されているのか?とか悩みどころがありそうです。

    • sha 2003-08-31 (SUN) 22:29:15

      あるいは、file.phpのget_source()内でページ名をセットしてもらうとかがよいかな。でも、上記の悩みどころは解決しませんね。

    • sha 2003-09-03 (WED) 03:05:59

      例えば、展開プラグインPにて、get_source(ページB); get_source(ページC);の順に実行していた場合、最初のページBの方に呼出されたプラグインQが記載されていた場合には、記載ページを間違えてしまいますね。これって実は、スマートな解法は存在しないのかな。。。プラグインの作成者に、展開されるページをわざわざセットしてもらう方針としないかぎり無理かも。。。

  • sha 2003-09-03 (WED) 07:25:12

    別のアイデアとして、perlのtaintモードのような手法で、読み取ったデータにプラグインが含まれる(可能性の)状態がどのように伝播していくかを追跡するフラグをデータに付与して、それが処理される前に出力したら$vars['gotten_source']にそのページ名をセットする、とかって実装できないかな?

    • sha 2003-09-13 (SAT) 16:14:22

      なんかプラグインが記述されているページを知るためだけに、これ↑をやるんだとしたら、あまりにも大げさかもしれませんね。もしやるなら、もっと他にも使える実装であって欲しいですね。


添付ファイル: file質問箱248.png 871件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-03-08 (月) 17:15:37
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.240 sec.

OSDN