**[[続・質問箱/535]] [#b3963f1f] #author("2018-03-11T14:40:04+09:00;2005-01-14T16:20:12+09:00","","") **[[質問箱/2535]] [#b3963f1f] |RIGHT:70|LEFT:410|c |~カテゴリ|| |~サマリ|URLによってスキンを振り分けたい| |~バージョン|1.4.4_php5| |~投稿者|[[tomix]]| |~状態|完了| |~投稿日|&new{2005-01-13 (木) 19:42:26};| ***質問 [#t0862cc5] 既出だったらすみません。 URL(またはサブドメイン)でスキンを振り分けることは可能でしょうか? たとえば www.hoge.jp では編集等の機能が隠れているスキン edit.hoge.jp、www.hoge.jp/editer.php, www.hoge.jp/staff/では通常のスキンと振り分けて後者に認証をかけたいです。 ようするに[[ここ>http://www.zend.co.jp/tech/index.php?Top]]のような外向けサイトをつくって、内の人のみ編集可能としたいわけなんです。 www.hoge.jp/staff/とした場合で、staffにBasic認証かけたとき、サーバーのBasic認証とWiki側の編集認証と2回認証を要求されると思うのですが、それを1回にすることもできるでしょうか ***回答 [#l7efa84d] -単にスキンをアクセスされるURL毎に切替えるだけなら簡単にできます。 例えば、default.ini.phpのSKIN_FILEを定義する部分を改造するとか。 ///////////////////////////////////////////////// // スキンファイルの場所 -define('SKIN_FILE', DATA_HOME . SKIN_DIR . 'pukiwiki.skin.' . LANG . '.php'); +define('SKIN_FILE', DATA_HOME . SKIN_DIR . $_SERVER['SERVER_NAME'] . '.php'); こうすれば、ホストに応じて(DATA_HOMEやSKIN_DIRが標準のままなら)skin/www.hoge.jp.phpやskin/edit.hoge.jp.phpがスキンとして用いられる ようになります。 複数のスキンを管理するのが面倒なら、スキンの中に$_SERVER['SERVER_NAME']や$_SERVER['REQUEST_URI']等で判別して、お好みの項目の 表示/非表示を制御するという手でも良いでしょう。 但し、スキンから編集のリンクを隠したところで、実際にプラグインがあり、 そしてそこに何らかの制限がかかっていない限り、機能そのものを 殺せている訳ではないことはお忘れなく。 サーバが同一なら、DATA_DIR等は共有、外向け側のPLUGIN_DIRからはedit類を削除した、複数のPukiWikiを設置するというのも一案かと思います。 また、認証についてですが、PukiWikiの認証はBASIC認証なので、2回要求されることはないと思いますが。 -- &new{2005-01-13 (木) 21:32:39}; -なるほど! 「DATA_DIR等は共有、外向け側のPLUGIN_DIRからはedit類を削除」は確かにその手がありました。1.4.4から分離もしやすいことだし! スキンだけで対処しようと考えていましたが、たしかにプラグインへのアクセスが可能だと、URLで直接引っ張っちゃった時に対応できませんものね。DATA_DIRを共有、PLUGIN_DIR+スキンは個別という設置方法をまずはためしてみます。! -- [[tomix]] &new{2005-01-14 (金) 14:42:34}; -なかなか面白い対応方法ですね :) -- [[teanan]] &new{2005-01-14 (金) 16:20:12}; #comment