Pukiwiki用tDiaryテーマチェンジャーを公開!

pukiwikiを課内で使っていて、とある女子曰く「デザインが可愛くない」の一言から改造を決意したものの、自分でスタイルシートを作るのは苦手なのでtDiaryテーマを流用する方法を模索していました。


PukiWikiはいかが?スタイルチェンジャーのファイルを参考にしました。

このファイルもScrapbox 〜ガラクタ箱〜を参考にしているそうです。

ファイル

改造したファイルをそのまま掲載します。

使用上の注意

Scrapbox 〜ガラクタ箱〜さんの注意事項と同じで・・・いいのかな?


私はphp素人なので、質問されても良く分かりません・・・

setstyle.php

pukiwiki\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

pukiwiki\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

ここに入れます。

pukiwiki\skin\theme\テーマ(フォルダ)\テーマ.css

こんな感じの構成になっていればOKです。

やっぱりパーミッションは分からない。

問題点

感謝

あっちこっちのサイトを参考にしました。これが出来上がったのは皆さんのおかげです!