Pukiwiki用tDiaryテーマチェンジャーを公開!
pukiwikiを課内で使っていて、とある女子曰く「デザインが可愛くない」の一言から改造を決意したものの、自分でスタイルシートを作るのは苦手なのでtDiaryテーマを流用する方法を模索していました。
PukiWikiはいかが?のスタイルチェンジャーのファイルを参考にしました。
このファイルもScrapbox 〜ガラクタ箱〜を参考にしているそうです。
ファイル
改造したファイルをそのまま掲載します。
使用上の注意
Scrapbox 〜ガラクタ箱〜さんの注意事項と同じで・・・いいのかな?
私はphp素人なので、質問されても良く分かりません・・・
setstyle.php
パーミッションはどうするんだろう?
<?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のテーマ集を使えるように改造! 「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 = 0; // CSS変更後、0:変更完了ページを表示、1:CSSを選択したページをリロード。 $cookie = "selcss"; // クッキー名(任意)。変更した場合は chgstyle.php の $cookie も同じにする。 $expire = time() + 365*24*3600;// クッキーの有効期限(1年)。 // ---------------------------------------------------------------------------- $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 = $home.$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 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <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
こっちもパーミッションはどうするんだろう?
<?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のテーマ集を使えるように改造! 「kenmituoの日記」http://d.hatena.ne.jp/kenmituo/ */ // 設定------------------------------------------------------------------------ // CSS変更前やクッキーが無効な場合のデフォルトのCSSファイルのURL。 $default_css = "http://localhost/pukiwiki/skin/pukiwiki.css"; // クッキー名(任意)。変更した場合は 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]; if ($css_url[0] != "none") { if (!isset($_COOKIE[$cookie])){ $css_url[0] = $default_css; echo $default_css; } else{ echo "$css_url[0]"; } } ?>
設定
pukiwiki.ski.phpその1
pukiwiki\skin\pukiwiki.ski.php
<?php include("chgstyle.php"); ?>
挿入する
変更前 <link rel="stylesheet" type="text/css" media="screen" href="skin/pukiwiki.css.php?charset=<?php echo $css_charset ?>" charset="<?php echo $css_charset ?>" /> 変更後 <link rel="stylesheet" type="text/css" media="screen" href="<?php include("chgstyle.php"); ?>?charset=<?php echo $css_charset ?>" charset="<?php echo $css_charset ?>" />
pukiwiki.ski.phpその2
pukiwiki\skin\pukiwiki.ski.php
<?php include("setstyle.php"); ?>
挿入する
変更前 <div id="menubar"> <?php echo do_plugin_convert('menu') ?></div> 変更後 <div id="menubar"> <?php include("setstyle.php"); ?> <?php echo do_plugin_convert('menu') ?></div>
メニューバーに表示させるようにしていますが、お好きな場所に移動しても動くんじゃないかな?(検証していません)
tDiaryのテーマ
tDiaryのページから「テーマ集」をダウンロードします。
pukiwiki\skin\theme
ここに入れます。
こんな感じの構成になっていればOKです。
やっぱりパーミッションは分からない。
感謝
あっちこっちのサイトを参考にしました。これが出来上がったのは皆さんのおかげです!