**[[質問箱4/502]] [#pe167198] #author("2018-03-11T20:48:01+09:00;2009-10-01T19:35:20+09:00","","") **[[質問箱/4502]] [#pe167198] |RIGHT:70|LEFT:410|c |~カテゴリ|| |~サマリ|ページによって適用するスキンを変更したい| |~バージョン|1.4.7| |~投稿者|[[ぺぃにゃん]]| |~状態|完了| |~投稿日|&new{2009-09-18 (金) 09:52:28};| ***質問 [#ve949bc4] 楽しいシステムを提供して頂きありがとうございます。 表題の件ですが、例えばTOPページは大きめにイメージを取ったスキンを自作して適用しているのですが、通常総てのページに同じスキンが適用されます。 しかし文章を読ませたいページなどはTOPページと同じデザインだと可読性が落ちるのでそれに応じたスキンを適用させたいのです。 PHPは多少扱えますので多少ハックする解決方法でも構いません。 何か情報がありましたらご教授願えませんでしょうか? よろしくお願いします。 ***回答 [#j06ec505] - 同じスキンファイルで分岐させるなら、[[Q. FrontPageのみ左サイドにサブメニューをつけたい>Q&A/デザイン・CSS#d6cb8217]] に書かれている、if 文の例が役に立つのかな? -- &new{2009-09-18 (金) 13:30:19}; - レスポンス有難うございます。 同じスキンじゃないんですよね、でもIF文の変数が解ったからスキンを名指しで読みに行く部分で同じようにIF文で分岐させればいいのかも。 スキンの読込を指定している所誰かご存知ないでしょうか? -- [[ぺぃにゃん]] &new{2009-09-18 (金) 13:45:15}; - ファイルパスを指定しているのは、default.ini.php とkeitai.ini.php です。定数''SKIN_FILE'' がそうです。ここでサブのスキンパスを新しく定義しておけば、default.ini.php は2種類設定して、keitai.ini.php はどちらも同じファイル、といった事もできそう。ただしこの時点では、呼び出すページが確定していない((例えば、http://pukiwiki.sourceforge.jp/ とアクセスした場合、これらのファイルを読み込んでいる時点では、呼び出すページ名が空っぽの状態です)) ので、ここで使うスキンファイルを確定させるのは難しいと思います。(それ以前に、初期化処理の途中なので使える変数がかなり限定されます)&br;実際の呼び出し位置は、lib/html.php のcatbody 関数の最後、require(SKIN_FILE); です。catbody 関数の中でスキンファイルで使う大半の変数を、global で呼び出したり、新しく定義しているので、ここなら同じ変数が使えると思います。 -- &new{2009-09-18 (金) 14:13:40}; - default.ini.phpで定義しているファイルパスを定数SKIN_FILEからグローバル変数$skin_fileに変えてcatbody 関数の最後をrequire($skin_file);(($skin_fileのglobal宣言が必要))にすればpluginでページごとにスキンをかえるようなことも可能と思いますが。[[dev:PukiWiki/1.4/ちょっと便利に/Wikiページにhtmlタグを埋め込む]]&br;ただPukiWikiでスキンファイルを変数でなく定数で定義している理由がイマイチわかりませんのでこの辺は確認要。 -- &new{2009-09-26 (土) 05:18:14}; -- その提案はすでにされています、スキンを定義でなく変数指定にしてほしい(skinプラグイン) [[dev:BugTrack/634]] 。&br;同じ名前の(グローバル)変数があって上書きされてしまった場合に発生するかもしれない問題に関する話題は、[[dev:BugTrack/771]] とか[[dev:BugTrack2/29]] に書かれている。 -- &new{2009-09-26 (土) 09:06:18}; - 有用な情報ありがとうございました。差し当たりcatbody関数の中に$titleでページ名をみてif文でskinファイルのパスを変化させてrequireする事で実現できました。 -- [[ぺぃにゃん]] &new{2009-10-01 (木) 19:30:27}; #comment