スタイルシートチェンジャーはサイトのスタイルシートを訪問者が選択して切り替えられるようにするスクリプトです。訪問者は、サイト作成者が用意した外部スタイルシートから好きなものを選択して、好みのデザインで閲覧できるようになります。JavaScriptでスタイルシートを切り替えるものがありますが、これはPHPのスクリプトによって、各ページに外部スタイルシートを指定するlink要素を直接挿入して切り替えます。v1.00からUAに応じてCSSを自動で切り替えられるようになりました。
とりあえず試してみる。↓
スタイルシートチェンジャーEXはスタイルシートチェンジャーに日にちや時間によって自動的にスタイルシートを切り替える機能を追加したものです。○時から○時まではこのCSS、○月○日から○月○日まではこのCSS、のように設定しておけば勝手にCSSを切り替えます。サイトデザインを変更する機会が多ければ少しは役に立つかもしれません。
このページでは以降、スタイルシートチェンジャーEXはEXと表記します。また、特に記述がなければ両スクリプト共通の説明になります。
CSSの実装はブラウザによって異なるので、そこらへんも注意する必要があります。ご使用の際は、差し支えなければリンクさせて頂きたいと思いますので、ぜひご連絡ください。質問や要望などがありましたらがらくたBBS-PHPでどうぞ。
スタイルシートチェンジャー v 1.02 をダウンロードする?→ csschg102.lzh
スタイルシートチェンジャーEX v 1.00 をダウンロードする?→ csschgex100.lzh
ダウンロードしたファイルを解凍して、setstyle.php と、chgstyle.php の2つのファイルを任意のフォルダにアップロードします。アップロードしたフォルダのパーミッションを 705 以上にして、各ファイルのパーミッションを604以上に設定します。動かなかった場合はパーミッションを指定数値より大きくして試してみてください。もちろん、PHPの動くサーバでないとダメです。
自分で作るか配布サイトから頂戴するなどして、任意のディレクトリにまとめて置いておきます。
CSSを選択するドロップダウンメニューを表示させたい場所に、<?php include("setstyle.php"); ?>
を挿入します。
適用させたいページの、<head>〜</head>間に、<?php include("chgstyle.php"); ?>
を挿入します。
”http://www.hoge.com/index.php”がサイトのホームページだとして、このページでスタイルシートを変更できるようにしてみます。
/ ←サイトルートディレクトリ。 | index.php ←サイトホームのページ内に<?php include("setstyle.php"); ?>
を挿入します。 | setstyle.php ←サイトルートにsetstyle.phpをアップします。 | chgstyle.php ←サイトルートにchgstyle.phpをアップします。 | hoge.php ←サイトルートのページには<?php include("chgstyle.php"); ?>
を挿入します。 ├ style/ ←変更用外部CSSファイルを格納するディレクトリ。 | main.css ←変更用外部CSSファイル(これをデフォルトのCSSと仮定します)。 └ hoge/ ←ルート以下のディレクトリ。 hogehoge.php ←ルート以下のページには<?php include("../chgstyle.php"); ?>
のように挿入します。
setstyle.phpの $selfurl は”http://www.hoge.com/setstyle.php”または”/setstyle.php”に、$csspath は”http://www.hoge.com/style/”または”/style/”にします。chgstyle.phpの $default_css は”http://www.hoge.com/style/main.css”または”/style/main.css”にします。インクルードするスクリプトファイルはインクルードするページからの相対パスで指定します。このように設定・設置すると、hogehoge.phpに<?php include("../setstyle.php"); ?>
を挿入し、このページでスタイルを変更してもサイト全体に反映されます。
各ファイルをメモ帳等で開いて、設定項目を環境に合わせて変更します。
$autoselect を”1”に設定するとUA(ユーザーエージェント、ブラウザの種類やバージョン)に応じてCSSを自動で切り替えられます。UA別のCSSファイルは、chgstyle.phpのスクリプト中の $default_css = "/style/opera.css"; // Opera
のように書いてある部分で指定します。コメントを参考にUA別のCSSファイルを $default_css と同じように指定してください。自動切り替えする必要がないUAについては、自動切り替えしない場合のCSSを指定します。そのUAを判別している部分を削除しても構いませんが、判別の順番は変えないでください。
chgstyle.php で出力されるlink要素の外部スタイルシートのパスは、setstyle.php の $csspath で指定しています。このパスは相対パスでも指定できますが、相対パスにすると下位ディレクトリのページでは正しいパスにならないので注意してください。$home、$selfurl ついても同じで、利便性を考えれば設置も容易だし、URLか絶対パスで指定した方が良いと思います。
クッキーは、CSS選択に指定した setstyle.php のあるディレクトリをルートとして、下位ディレクトリすべてが有効範囲になります。例えば、サイトのルートディレクトリに置いた setstyle.php でCSSを選択した場合、サイト全体が有効範囲になります。setstyle.php の $selfurl は実行する setstyle.php を指定しています。ここでサイトのルートディレクトリに置いた setstyle.php をURLか絶対パスで指定しておけば、サイトのどのページからCSSを変更してもサイト全体に反映されるようになります。
日にち指定と時間指定が重なった場合は日にちの方が優先されます。どちらの指定もなければ通常の動作になります。通常時のデフォルトCSSである setstyle.php の $css_file[1] と chgstyle.php の $default_css が日にちまたは時間によって指定されたCSSに置き換えられるので、この2つは同じ設定(通常時のCSSファイル)にしておいてください。指定時間内でもデフォルトCSS以外を選択すれば、スタイルシートチェンジャーと同様の動作になります。
CSSが自動切り替えされていてもブラウザの設定によってはページをリロードしないとすぐには反映されないことがあります。すぐに反映させたい場合は、HTTPヘッダやmeta要素を使ってブラウザがそのページをキャッシュしないようにさせれば効果があるかもしれません。かもしれません、てのはこれもブラウザの仕様によるため。
PukiWikiやMovableTypeなどのCMSやブログでも比較的簡単にCSSを切り替えできるようです。私はCMSは使用したことがないのですが、スタイルシートチェンジャーでのCSS切り替え方法を解説してくださっているサイトを紹介させて頂きます。
CSS変更フォームのドロップダウンメニューでCSSを選択するとすぐにCSSを変更するようにする方法です。JavaScriptを使用しますが、JavaScriptが無効な時は送信ボタンで変更できます。
CSS変更フォームを表示するページ(setstyle.phpをインクルードしたページ)の<head>〜</head>間に以下のJavaScriptコードを記述します。
<meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> <!-- function ChangeStyle() { document.ccform.method = "post"; //下の行でsetstyle.phpをhttp://から始まる絶対パスで指定 document.ccform.action = "http://www.hoge.com/setstyle.php"; document.ccform.submit(); } --> </Script>
setstyle.phpを以下のように書き換えます。
echo "<form method=\"post\" action=\"{$selfurl}\">\n"; を echo "<form method=\"post\" action=\"{$selfurl}\" name=\"ccform\">\n"; に echo "<select name=\"cssnum\">\n"; を echo "<select name=\"cssnum\" onChange=\"ChangeStyle()\">\n"; に echo "<input type=\"submit\" value=\"変更\">\n"; を(この行を削除してしまってもいいですが) echo "<noscript><input type=\"submit\" value=\"変更\"></noscript>\n"; に(こうするとJavaScriptが無効なときには変更ボタンで変更できます)
2005/05/18 ver.1.02 HTTP_REFERERチェック削除。変数名変更($this > $selfurl )。
2005/01/04 ver.1.01 UA別自動切替に Firefox を追加。それだけです(汗。
2004/03/23 ver.1.00 UAに応じてCSSを自動で切り替えるオプションを追加。ドロップダウンメニュー中の選択しているCSSのoption要素にSELECTED属性を付けるようにしました。
2003/08/31 ver.0.10 とりあえず公開。
2007/02/13 ver.1.00 とりあえず公開。