/** * @return void CSS出力 */ function _printCss($cssFilePath, $skin = null) { global $_conf, $STYLE, $MYSTYLE; /* // クエリにユニークキーを埋め込んでいるいるので、キャッシュさせてよい // ノーマルp2ではまだ含んでないよ $now = time(); header('Expires: ' . http_date($now + 3600)); header('Last-Modified: ' . http_date($now)); header('Pragma: cache'); header('Content-Type: text/css; charset=Shift_JIS'); */ $mtime = max(filemtime($cssFilePath), filemtime(_getSkinFilePath($skin))); if (file_exists($_conf['conf_user_file'])) { $mtime = max($mtime, filemtime($_conf['conf_user_file'])); } header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $mtime) . ' GMT'); header('Content-Type: text/css; charset=Shift_JIS'); echo "@charset \"Shift_JIS\";\n\n"; ob_start(); include_once $cssFilePath; // $STYLEを含む // $MYSTYLEでCSSを上書き表示 require_once P2_LIB_DIR . '/mystyle_css.funcs.php'; $MYSTYLE = parse_mystyle($MYSTYLE); printMystyleCssByFileName($cssFilePath); // 空スタイルを除去 echo preg_replace('/[a-z\\-]+[ \\t]*:[ \\t]*;/', '', ob_get_clean()); }
特殊な配列のキーとして 'カテゴリ'='*' → すべての *_css.php で !important つきで読み込まれる 'カテゴリ'='all' → すべての *_css.php で読み込まれる 'カテゴリ'='base' → style_css.php に読み込まれる 'セレクタ'='sb_td' → subjectテーブル(偶数列)をまとめて設定 'セレクタ'='sb_td1' → subjectテーブル(奇数列)をまとめて設定 'セレクタ'='@import' → 値をURLとみなし、@import url('値'); とする がある。 スタイル設定の優先順位は $MYSTYLE['*'] >>> $MYSTYLE > $MYSTYLE['all'] > $STYLE >> $MYSTYLE['base'] > $STYLE['基本'] ただし、値に !important をつけた場合はそれが最優先で適用される。 $MYSTYLE['*'] および !important つきの値はJavaScriptでの変更が効かないので注意!(ブラウザ依存?) */ // {{{ 初期化 $MYSTYLE = parse_mystyle($MYSTYLE); // }}} // {{{ parse_mystyle() /** * 旧形式の$MYSTYLEを多次元配列に変換する * * @param array $MYSTYLE * @return array */ function parse_mystyle($MYSTYLE) { $unused = array(); foreach ($MYSTYLE as $key => $value) { if (is_string($value) && strstr($key, '<>')) { list($category, $selector, $property) = explode('<>', $key); if ($category == '*') {