スキンを定義でなく変数指定にしてほしい(skinプラグイン)†
- ページ: BugTrack
- 投稿者: みこ
- 優先順位: 重要
- 状態: 提案
- カテゴリー: 本体新機能
- 投稿日: 2004-07-16 (金) 01:19:30
- バージョン: ALL
メッセージ†
スキンが、定義値になっているため動的なスキンの変更ができない。もし(プラグイン作者以外に)セキュリティリスクがないならば、変数にしてプラグインで再定義できるような感じにしてほしいです。
例:1.4.3の互換を保ちつつ変更する場合
- default.ini.php
11c11,12
< define('SKIN_FILE',SKIN_DIR.'pukiwiki.skin.'.LANG.'.php');
---
> define('SKIN_FILE_DEFAULT',SKIN_DIR.'pukiwiki.skin.'.LANG.'.php');
> $skin_file = SKIN_FILE_DEFAULT;
func.php/html.php はスキン定義がないときに、$skin_fileから読み込むようにします。
- html.php
13a14
> global $skin_file;
102c103,107
< die_message(SKIN_FILE.'(skin file) is not found.');
---
> if (!file_exists($skin_file)||!is_readable($skin_file)) {
> die_message(SKIN_FILE_DEFAULT.'(skin file) is not found.');
> } else {
> define(SKIN_FILE,$skin_file);
> }
- func.php
395a396,397
> global $skin_file;
>
406a409,413
> elseif ($skin_file != '' && file_exists($skin_file) && is_readable($skin_file))
> {
> define(SKIN_FILE,$skin_file);
> catbody($title,$page,$body);
> }
ちなみに、私のサイトではこれを追加して skinプラグイン を作成しています。
- ふむふむ。skinの動的切り替えの実現ですね。BugTrack/629でも取り上げている通り、これもまたタイムリーな話題だと思います。 -- henoheno
- デフォルトの状態では、skinファイルの名称にLANGを含めなければならない、という状況も以前から問題だと思っていました。こちらも、昨日BugTrack/633に書いたような手順を持ち込むことにより、対策できればと思います。 -- henoheno
- skinやcssなどのデザイン要素を、可能ならばページ毎に切り替えたい、というニーズはよく解ります。一方で、プラグインから、特にページ内に記述したプラグインをトリガにして動的に変更できる様に、変更できる余地を追加してしまう、という実現方法は、システムから見ると少々危なっかしくなる様に思います (^^; うまい手はないかしら・・・ -- henoheno
- そのあたりはわたしもこれを提案するときにかなり悩んだのですが、プラグイン作者=PukiWiki上級者(=PHPにある程度精通している人)とわりきるほうがいいような感じがします。(その代わり、オフィシャルではスキン関連のプラグインを含めないでもいいかと・・・:)) -- みこ
- コメントありがとうございます。そうですね。配布するものは安全寄りに作っておいて、(リスクの提示込みで)カスタマイズ方法を別途紹介する、というのは現状の
お年頃落としどころですね :) -- henoheno
- とまぁ応用の仕方で悩む前に、この問題については、動的切り替えを賢くできる様にする下ごしらえが要だと思います。まずはそのあたりからですね :) -- henoheno
- ふう、スキンもCSSも一本化したし、やっと糸口ができてきましたね :) -- henoheno