Category:Design

スキン内のディレクトリ指定

  • ページ: BugTrack
  • 投稿者: toba?
  • 優先順位: 低
  • 状態: 提案
  • カテゴリー: その他
  • 投稿日: 2004-09-16 (木) 08:59:46
  • バージョン: 1.4.4

修正

(1.4.8)

css や javascript などの外部ファイルが置かれているディレクトリ (従来は skin/ ディレクトリ固定) は、定数 SKIN_DIR (本来はスキンファイルのあるディレクトリを指す。デフォルトでは skin/) を参照します。

これによって、SKIN_DIR を変更するだけで、スキンファイルの置き場所 も 外部ファイル の置き場所も変更されます。

ただし、この二つの違いに注意する必要があります。

  1. スキンファイルは PukiWiki 本体からロードされるPHPコードです。これを設置する場所はWebブラウザから閲覧できる場所である必要はありません。
  2. 外部ファイルは Webブラウザによって参照されます。これらはWebブラウザから閲覧できる場所になくてはなりません。

メッセージ

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" />

では?


  • 現状は「半分」わざとです。そこをSKIN_DIRにしてしまうと、デフォルトのまま配置するぶんには良いのですが、DATA_HOMEをWebブラウザから見えない場所に移動した瞬間に(Webブラウザから)CSSにアクセスできなくなり、PukiWikiの見た目がとーっても味気なくなるのです。致命的ではないですけどね :) -- henoheno 2004-09-16 (木) 20:39:37
    • あれ? BugTrack/656 から SKIN_DIR と DATA_HOME は直接的な関連はなく、別々に管理するという認識だったのですが違いましたか?
      BugTrack/656から得た私の認識では、SKIN_DIR は SKIN関連のファイル(php, cssファイルなど)を格納するディレクトリ名で、DATA_HOME をWebブラウザから見えない場所に移動したとしても、PukiWiki側では、SKIN関連のphpファイルは DATA_HOME と組み合わせた SKIN_FILE変数でアクセスし、cssファイルへは SKIN_DIR の値のみを参照してアクセスしますよね。指摘があった変更をしても問題ないと思いますけど-- jjyun 2004-09-20 (月) 20:25:19
    • pukiwiki.ini.phpにも散々注意書きがして有りますから、SKIN_DIRを使っても問題ないと思いますが…。 -- Ratbeta? 2004-09-20 (月) 21:43:30
  • BugTrack/509 -- Ratbeta? 2004-09-20 (月) 14:25:49
  • 私も先ほどこれが原因でしばらく調べておりました。複数のwikiを設置して、スキンだけ共有使用と思い、SKIN_DIRの場所をpukiwiki.ini.phpで共通のディレクトリを指定しているにもかかわらず、設定がうまく反映されませんでした。定数に変更することでうまくCSSを読み込んでくれましたが、やはり修正してもよいのではないでしょうか? -- hkb? 2005-12-16 (金) 21:44:36
  • 外部リソース用の別の定数を SKIN_DIR とは別に用意しておいて、デフォルトの値を SKIN_DIR と同じにしておけば、二つのニーズの共存が可能になるかしら? -- henoheno 2006-06-11 (日) 22:20:28
     1. define('RSRC_DIR', 'skin/') みたいな定数を用意
     2. 各スキンファイルなどにその定数を使用する
     3. 切り替えたい人は、その定数の値を変更すれば、まとめて切り替わって幸せ
       (ハードワイヤされたコードをいじらなくて良い)

BugTrack2/183より移動: テンプレートファイルにおいてSKIN_DIR不使用

  • タイトル: テンプレートファイルにおいてSKIN_DIR不使用
    • 投稿者: otn?
    • 投稿日: 2006-06-11 (日) 21:12:49

skin/{pukiwiki.skin.php,tdiary.skin.php}の、<head>でのスタイルシート参照、JavaScript指定で、それぞれhref="skin/、src="skin/ となっていますが、SKIN_DIR を echo したほうが良いと思います。

  • こんにちは :) FAQです。BugTrack/691をどうぞ -- henoheno 2006-06-11 (日) 22:19:09
  • あちゃあ。早速のコメントありがとうございます。「skin/ pukiwiki.skin.php」で検索したんですが、pukiwiki.skin.ja.php とは、やられました。私も、DATA_HOMEは外で、SKIN_DIRは絶対パスにしていますが、スキンファイル名はdefine('SKIN_FILE', DATA_HOME . basename(SKIN_DIR) . ・・・して解決してます。 -- otn? 2006-06-12 (月) 00:10:02

BugTrack2/190より移動: SKIN_DIRをechoするものをコミットした件 (2006/07)

  • タイトル: デフォルトのスキンでディレクトリが固定されている
    • 投稿者: teanan
    • 投稿日: 2006-07-20 (木) 02:34:59
    • メッセージ:

デフォルトのスキンでディレクトリが "skin/"に固定されています。pukiwiki.ini.php で SKIN_DIR を変更するとパスが変化せず、スタイルシートが適用されません。 official:質問箱3/457

  • cvs:skin/pukiwiki.skin.php (r1.49) -- teanan 2006-07-20 (木) 02:45:10
  • お疲れ様です。これで今までの疑問が出ないようになりますし、シンプルな運用をもたらしますので、悪くないと思います。RSRC_DIR などを追加で作ったとしても、結局 設定箇所が増えて(複雑になって)しまいます。コミットログのBugTrack番号だけ(気付いたら)修正をお願いします。下のついでに修正しました。気付いた人が直す! -- henoheno 2006-08-06 (日) 21:12:53
  • あ、tdiaryスキンも同様で。 -- henoheno 2006-08-06 (日) 21:36:09
  • SKIN_URI か何かも指定しては?IMG_URI もついでに。 -- 2006-07-20 (木) 21:23:26
  • plus よりコピー
    define('ROOT_URI', '');
    define('SKIN_URI', ROOT_URI . SKIN_DIR);
    define('IMAGE_URI', ROOT_URI . IMAGE_DIR);
    デフォルトはとりあえずこれでいいでしょうね。-- 2006-07-20 (木) 21:23:26

Yoshiiさんの手法

  • SkinSelectを作成していて思ったのですが、PukiWiki は SKIN_DIR とスキン名を同一に扱っているので拡張するのに苦労しました。私の手法を以下に紹介します。 -- Yoshii 2006-07-22 (土) 00:17:16

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のスキンをいじることなく変更が可能なので失敗してもすぐに戻せる事も魅力です。

コメント



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-02-15 (土) 09:01:34
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.239 sec.

OSDN