質問箱/248
の編集
Top
/
質問箱
/
248
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
Wikiを試したい方へ:
「この」Wikiは、
PukiWiki
のための公式Wikiです。
テスト書き込みなどは
お試しサイト
https://pukiwiki.osdn.jp/_trial/
をご利用ください
**[[質問箱/248]] [#lbb3d588] |RIGHT:70|LEFT:410|c |~カテゴリ|| |~サマリ|プラグイン内にて、(そのプラグインを呼び出したページではなくて)そのプラグインが記述されているページ名を知りたい。| |~バージョン|1.4rc4| |~投稿者|[[sha]]| |~状態|保留| |~投稿日|&new{2003-08-28 (THU) 19:22:33};| ***質問 [#y463d364] ~自作プラグインを作成しています。すこしマニアックな質問です。 :質問| プラグイン内にて、(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)しか知ることが出来ません。 #ref(質問箱248.png,nolink,zoom,400x400) ~このように別のページを(ほんの一部でも)展開するプラグインとして以下のようなものがあります。 #pcomment #pcomment(ページB)←(やはり$vars['page']はページAとなる) #tracker_list #includesubmenu #include(ページB) ←(例外的に、$vars['page']はページBとなる) その他、まだある。 ~(1)だけでなく(2)も分かると、記載されたページを書き換える(自作)プラグインの場合、非常に助かります。例えば、[[自作プラグイン/vote2.inc.php]]などでは、&vote2が記述されたページ名を明示的に書くことによって回避していますが、#pcommentなどで展開されるページの名前まで把握しておかないと使えないのでは、とても不便です。是非、(2)も取得したいです。 ***回答 [#r6a03f87] -[[名無しさん]] &new{2003-08-29 (FRI) 09:08:33}; ~MenuBar内のcounterが、その仕様を逆に利用していたりします。 --[[sha]] &new{2003-08-29 (FRI) 18:16:54}; ~なるほど、それはそれで便利ですね。ただ上の話は、(1)と同時に(2)も得る方法はありませんか?という質問ですので、counterに関わる部分の仕様に変更はないかと思います。 -[[sha]] &new{2003-08-31 (SUN) 22:24:50}; ~やはり、別のページを展開するコマンドに、$vars['gotten_source']とかに読み込んだページ名をセットしてもらうしか手がないのでしょうか?でも、もし複数のページを読み込んでいたりした場合はどうするのか?とか、呼出されたプラグインが本当にそのページに記載されているのか?とか悩みどころがありそうです。 --[[sha]] &new{2003-08-31 (SUN) 22:29:15}; ~あるいは、file.phpのget_source()内でページ名をセットしてもらうとかがよいかな。でも、上記の悩みどころは解決しませんね。 --[[sha]] &new{2003-09-03 (WED) 03:05:59}; ~例えば、展開プラグインPにて、get_source(ページB); get_source(ページC);の順に実行していた場合、最初のページBの方に呼出されたプラグインQが記載されていた場合には、記載ページを間違えてしまいますね。これって実は、スマートな解法は存在しないのかな。。。プラグインの作成者に、展開されるページをわざわざセットしてもらう方針としないかぎり無理かも。。。 -[[sha]] &new{2003-09-03 (WED) 07:25:12}; ~別のアイデアとして、perlのtaintモードのような手法で、読み取ったデータにプラグインが含まれる(可能性の)状態がどのように伝播していくかを追跡するフラグをデータに付与して、それが処理される前に出力したら$vars['gotten_source']にそのページ名をセットする、とかって実装できないかな? --[[sha]] &new{2003-09-13 (SAT) 16:14:22}; ~なんかプラグインが記述されているページを知るためだけに、これ↑をやるんだとしたら、あまりにも大げさかもしれませんね。もしやるなら、もっと他にも使える実装であって欲しいですね。 //#comment
**[[質問箱/248]] [#lbb3d588] |RIGHT:70|LEFT:410|c |~カテゴリ|| |~サマリ|プラグイン内にて、(そのプラグインを呼び出したページではなくて)そのプラグインが記述されているページ名を知りたい。| |~バージョン|1.4rc4| |~投稿者|[[sha]]| |~状態|保留| |~投稿日|&new{2003-08-28 (THU) 19:22:33};| ***質問 [#y463d364] ~自作プラグインを作成しています。すこしマニアックな質問です。 :質問| プラグイン内にて、(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)しか知ることが出来ません。 #ref(質問箱248.png,nolink,zoom,400x400) ~このように別のページを(ほんの一部でも)展開するプラグインとして以下のようなものがあります。 #pcomment #pcomment(ページB)←(やはり$vars['page']はページAとなる) #tracker_list #includesubmenu #include(ページB) ←(例外的に、$vars['page']はページBとなる) その他、まだある。 ~(1)だけでなく(2)も分かると、記載されたページを書き換える(自作)プラグインの場合、非常に助かります。例えば、[[自作プラグイン/vote2.inc.php]]などでは、&vote2が記述されたページ名を明示的に書くことによって回避していますが、#pcommentなどで展開されるページの名前まで把握しておかないと使えないのでは、とても不便です。是非、(2)も取得したいです。 ***回答 [#r6a03f87] -[[名無しさん]] &new{2003-08-29 (FRI) 09:08:33}; ~MenuBar内のcounterが、その仕様を逆に利用していたりします。 --[[sha]] &new{2003-08-29 (FRI) 18:16:54}; ~なるほど、それはそれで便利ですね。ただ上の話は、(1)と同時に(2)も得る方法はありませんか?という質問ですので、counterに関わる部分の仕様に変更はないかと思います。 -[[sha]] &new{2003-08-31 (SUN) 22:24:50}; ~やはり、別のページを展開するコマンドに、$vars['gotten_source']とかに読み込んだページ名をセットしてもらうしか手がないのでしょうか?でも、もし複数のページを読み込んでいたりした場合はどうするのか?とか、呼出されたプラグインが本当にそのページに記載されているのか?とか悩みどころがありそうです。 --[[sha]] &new{2003-08-31 (SUN) 22:29:15}; ~あるいは、file.phpのget_source()内でページ名をセットしてもらうとかがよいかな。でも、上記の悩みどころは解決しませんね。 --[[sha]] &new{2003-09-03 (WED) 03:05:59}; ~例えば、展開プラグインPにて、get_source(ページB); get_source(ページC);の順に実行していた場合、最初のページBの方に呼出されたプラグインQが記載されていた場合には、記載ページを間違えてしまいますね。これって実は、スマートな解法は存在しないのかな。。。プラグインの作成者に、展開されるページをわざわざセットしてもらう方針としないかぎり無理かも。。。 -[[sha]] &new{2003-09-03 (WED) 07:25:12}; ~別のアイデアとして、perlのtaintモードのような手法で、読み取ったデータにプラグインが含まれる(可能性の)状態がどのように伝播していくかを追跡するフラグをデータに付与して、それが処理される前に出力したら$vars['gotten_source']にそのページ名をセットする、とかって実装できないかな? --[[sha]] &new{2003-09-13 (SAT) 16:14:22}; ~なんかプラグインが記述されているページを知るためだけに、これ↑をやるんだとしたら、あまりにも大げさかもしれませんね。もしやるなら、もっと他にも使える実装であって欲しいですね。 //#comment
テキスト整形のルールを表示する
添付ファイル:
質問箱248.png
926件
[
詳細
]