Pukiwiki用tDiaryテーマチェンジャー.ver0.2
UTF8でLFなwindows環境でテストしています。
setstyle.php
UTF8、LF、BOMあり
<?php /* スタイルシートチェンジャー version 1.02 By Teal (http://readygo.s8.xrea.com/) 2003/08/31 ver.0.10 とりあえず公開。 2004/03/23 ver.1.00 UAに応じてCSSを自動で切り替えるオプションを追加。ドロップダウンメニュー中の選択しているCSSのoption要素にSELECTED属性を追加。 2005/01/04 ver.1.01 UA別自動切替に Firefox を追加。 2005/05/18 ver.1.02 HTTP_REFERERチェック削除。変数名変更($this > $selfurl )。 CSS選択フォームを表示させたい場所に <?php include("setstyle.php"); ?>を挿入する。 「スタイルシートチェンジャー version 1.02」を参考にして、tDiaryのテーマ集を使えるように改造! Pukiwiki用tDiaryテーマチェンジャー.ver0.2 2008/03/17 「kenmituoの日記」http://d.hatena.ne.jp/kenmituo/ */ // 設定------------------------------------------------------------------------ // パスは置き換えてください。 $home = "http://localhost/pukiwiki/"; // pukiwikiのディレクトリ、フルパス! $csspath = "skin/theme/"; // tDiaryのテーマがあるディレクトリ $index_page = $home."index.php?"; // 変更完了ページの「HOMEへ戻る」のリンク先。 $default_css = $home."skin/pukiwiki.css.php"; //pukiwikiの標準スキンのパス、普通は変更しない $selfurl = $home."setstyle.php";// このスクリプトの場所とファイル名。 $css_file = array(); //ファイル名格納用の配列 $css_file[0] = "PukiWiki"; //標準スキンの名前、素敵な名前にしてください。 $reload = 1; // CSS変更後、0:変更完了ページを表示、1:CSSを選択したページをリロード。 $cookie = "selcss";// クッキー名(任意)。変更した場合は chgstyle.php の $cookie も同じにする。 $expire = time() + 31*24*3600;// クッキーの有効期限(1ヶ月)。 // ---------------------------------------------------------------------------- //tDiaryのフォルダ名を探す。フォルダ名とCSSのファイル名が同じであることが必須! $i=1; if( $handle = opendir( $csspath ) ){ while( false !== $file = readdir( $handle ) ){ if( $file != "." && $file != ".." ){ // 除ディレクトリ $css_file[$i] = $file; // ディレクトリの名前を格納 $i++; } } closedir( $handle ); } // ---------------------------------------------------------------------------- if (phpversion()<"4.1.0") { $_SERVER = $HTTP_SERVER_VERS; $_POST = $HTTP_POST_VARS; $_COOKIE = $HTTP_COOKIE_VARS; } if (!isset($_POST['cssnum'])) { echo "<form method=\"post\" action=\"{$selfurl}\">\n"; echo "<select name=\"cssnum\">\n"; for ($i = 0; $i <= count($css_file); $i++) { if ($i == $selected_css) { echo "<option value=\"{$i}\" selected>{$css_file[$i]}</option>\n"; } else { echo "<option value=\"{$i}\">{$css_file[$i]}</option>\n"; } } echo "</select>\n"; echo "<input type=\"submit\" value=\"変更\">\n"; echo "</form>\n"; } else { if ($css_file[$_POST['cssnum']] == "none") { $value = "none|".$_POST['cssnum']; $string = "なし"; } else { $temp_css = $css_file[$_POST['cssnum']]; $string = $css_file[$_POST['cssnum']]; if ($_POST['cssnum'] == 0){ // 初期設定の場合 $value = $default_css."|".$_POST['cssnum']; $css_value = $default_css; } else{ // tDiaryテーマの場合 $value = $csspath.$temp_css."/".$temp_css.".css"."|".$_POST['cssnum']; $css_value = $csspath.$temp_css."/".$temp_css.".css"; } } setcookie($cookie, $value, $expire); if ($reload) { $redirect_url = (getenv("HTTP_REFERER") != "") ? getenv("HTTP_REFERER") : $index_page; header("location: $redirect_url"); exit; } echo <<<MAIN <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <link rel="stylesheet" type="text/css" media="screen" href="$css_value" /> <title>スタイルシート変更完了</title> </head> <body> <div id="body"> <p>スタイルシートを<strong> {$string} </strong>に変更しました。</p> <p>ブラウザがスタイルシートに対応していてクッキーが有効であれば、次回の更新から反映されます。</p> <p><a href="$index_page">HOMEへ戻る</a></p> <script type="text/javascript"> <!-- document.write('<p><a href="JavaScript:history.back()">前のページへ戻る<\/a><\/p>'); --> </script> <noscript>前のページで確認したい場合は、ブラウザの戻るボタンで戻ってください。</noscript> </div> </body> </html> MAIN; } ?>
chgstyle.php
UTF8、LF、BOMなし!
BOM付けると・・・罠に陥るので「なし」にしてください。
<?php /* スタイルシートチェンジャー version 1.02 By Teal (http://readygo.s8.xrea.com/) 2003/08/31 ver.0.10 とりあえず公開。 2004/03/23 ver.1.00 UAに応じてCSSを自動で切り替えるオプションを追加。ドロップダウンメニュー中の選択しているCSSのoption要素にSELECTED属性を追加。 2005/01/04 ver.1.01 UA別自動切替に Firefox を追加。 2005/05/18 ver.1.02 HTTP_REFERERチェック削除。変数名変更($this > $selfurl )。 CSSを適用させたいページの<head>〜</head>間に <?php include("chgstyle.php"); ?>を挿入する。 */ //「スタイルシートチェンジャー version 1.02」を参考にして、tDiaryのテーマ集を使えるように改造! // Pukiwiki用tDiaryテーマチェンジャー.ver0.2 2008/03/17 //「kenmituoの日記」http://d.hatena.ne.jp/kenmituo/ // //[UTF8][BOMなし]で保存しないとはまる。「%EF%BB%BF」FirefoxのWeb Developerでしか確認できていない。 // // 設定------------------------------------------------------------------------ // CSS変更前やクッキーが無効な場合のデフォルトのCSSファイルのURL。 $home = "http:localhost/pukiwiki/"; $default_css = $home."skin/pukiwiki.css.php"; // クッキー名(任意)。変更した場合は setstyle.php の $cookie も同じにする。 $cookie = "selcss"; // CSS変更前やクッキーが無効な場合にUAに応じCSSを自動切替は省略 // ---------------------------------------------------------------------------- if (phpversion()<"4.1.0") { $_SERVER = $HTTP_SERVER_VERS; $_POST = $HTTP_POST_VARS; $_COOKIE = $HTTP_COOKIE_VARS; } $css_url = explode("|",$_COOKIE[$cookie]); $selected_css = $css_url[1]; //print_r($_COOKIE); if ($css_url[0] != "none") { if (!isset($_COOKIE[$cookie])){ $css_url[0] = $default_css; echo $default_css; } else{ echo "$css_url[0]"; } } ?>
入れ方とかは前回の日記を参照のこと。