(1.4.8)
css や javascript などの外部ファイルが置かれているディレクトリ (従来は skin/ ディレクトリ固定) は、定数 SKIN_DIR (本来はスキンファイルのあるディレクトリを指す。デフォルトでは skin/) を参照します。
これによって、SKIN_DIR を変更するだけで、スキンファイルの置き場所 も 外部ファイル の置き場所も変更されます。
ただし、この二つの違いに注意する必要があります。
pukiwiki.skin.ja.phpにおいて、skinディレクトリの位置を
<link rel="stylesheet" href="skin/default.ja.css" type="text/css" media="screen" charset="Shift_JIS" /> <link rel="stylesheet" href="skin/print.ja.css" type="text/css" media="print" charset="Shift_JIS" />
というように記載してあるのですが、これはわざとでしょうか? 修正忘れでしょうか?
<link rel="stylesheet" href="<?php echo SKIN_DIR ?>default.ja.css" type="text/css" media="screen" charset="Shift_JIS" /> <link rel="stylesheet" href="<?php echo SKIN_DIR ?>print.ja.css" type="text/css" media="print" charset="Shift_JIS" />
では?
1. define('RSRC_DIR', 'skin/') みたいな定数を用意 2. 各スキンファイルなどにその定数を使用する 3. 切り替えたい人は、その定数の値を変更すれば、まとめて切り替わって幸せ (ハードワイヤされたコードをいじらなくて良い)
skin/{pukiwiki.skin.php,tdiary.skin.php}の、<head>でのスタイルシート参照、JavaScript指定で、それぞれhref="skin/、src="skin/ となっていますが、SKIN_DIR を echo したほうが良いと思います。
デフォルトのスキンでディレクトリが "skin/"に固定されています。pukiwiki.ini.php で SKIN_DIR を変更するとパスが変化せず、スタイルシートが適用されません。 official:質問箱3/457
define('ROOT_URI', ''); define('SKIN_URI', ROOT_URI . SKIN_DIR); define('IMAGE_URI', ROOT_URI . IMAGE_DIR);デフォルトはとりあえずこれでいいでしょうね。-- 2006-07-20 (木) 21:23:26
SKIN_DIRとは別に $skinname と言う変数を作成します。$skinnameは適当な値(defaultとか)を pukiwiki.ini.php に記述します。
そうして pukiwiki.skin.php には以下のように記述します。
<?php echo SKIN_DIR . 'theme/' . $skinname . '/' ?>pukiwiki.css.php?
theme/ はスキンが散らばらないようにするフォルダなので必須ではありません。
pukiwiki.skin.php に到達するパスも変更する必要があります。私はSKIN_DIR/pukiwiki.skin.php をダミーにし、以下のように実体を読み込んでいます。
require(SKIN_DIR . 'theme/' . $skinname . '/pukiwiki.skin.php');
このように $skinname を独立させれば値を変更するだけでスキンを切り替える事が可能です。pukiwiki.ini.phpからindex.phpに値の場所を変更すればURL毎にスキンの切り替えが可能になったりします。また、defaultのスキンをいじることなく変更が可能なので失敗してもすぐに戻せる事も魅力です。