Script


スタイル選択スクリプト with 「あれこれポップアップ」 Ver 4.2

スタイル選択スクリプトについて。

ユーザが用意された複数のスタイル(デザイン)のうち1つを選び、 それをサイト全体に適用させる CGI スクリプトです。 Cookie と外部CSSファイルを利用することによって実現しています。

また、 CSS の実装がヘボいブラウザへの対策機能もあります。 特定のブラウザに対し、 CSSを読み込まないようにしたり、 デフォルトで読み込ませるCSSを設定することができます。

「あれこれポップアップ」について

娘娘飯店しるきぃうぇぶ で配布されている あれこれポップアップ の適用状態も指定できます。 あれこれポップアップ設置の詳細は左記ページをご覧下さい。

使用条件

WWWサーバ側

WWW サーバが以下の条件を全て満たしている必要があります。 一つでも当てはまらない場合、 このスクリプトを埋め込むことができません。

  • (自作の)perl による CGI が利用できる。
  • SSIの exec 命令が利用できる。

クライアント(ユーザ)側

クライアント側が cookie が利用可能になっていないと、 デフォルトのスタイル以外選択してもスタイルが変わりません。 また、これは CSS 選択スクリプトなので、 CSSに対応していない環境に対しては意味がありません (もっとも、 そのための構造と見栄えの分離なんですが)。

「あれこれポップアップ」の使用条件は、 配布ページをご参照下さい。

使用許諾条件

無料であり、 改造自由であり、 無断転載可能ですが、 全く無保証かつ無サポートです。

でも、 お使い頂けるなら事後にでも教えてくれると喜びます。

なお、 当ページでは「あれこれポップアップ」を配布しておりません。 「あれこれポップアップ」に関する諸権利は、 作者のありみかさとみ氏が所有します。

ダウンロード

テキストファイル版

getstyle.txt (04/09/24)
フォームによって選ばれたCSSの名前を、Cookieに保存します。
putstyle.txt (04/09/24)
Cookie から情報を得て、適切な link 要素を出力します。

ダウンロードした後、 ファイルの拡張子を .txt から .cgi に変更します。

default.css (04/01/31)
light.css (04/01/31)
サンプル用の CSSファイルです。

lzh圧縮版

cssselect042.lzh (04/09/24)
上記をアーカイブしました。

設置方法

前準備

  • 適用させたい複数の CSSファイルを、 適当なディレクトリにまとめておきます。 なお、 nostyle はスクリプトの予約語なので、 この名前の CSSファイル("nostyle.css")は利用できません。
  • このフォルダに CSS以外のファイルは置かない方が宜しいでしょう。
  • 当然の如く、 HTML 文書は適切な文法とマークアップに乗っ取っている必要があります。
  • 「あれこれポップアップ」の設置は配布ページをご覧下さい。
  • 「あれこれポップアップ」の ArekorePopup.js をリッチスタイル用とスタンダードスタイル用の2種類用意することで、 どちらかを選択させることもできます。

"getstyle.cgi" のカスタマイズ

  • 1 行目の perl のパスをWWWサーバの環境に合わせます。
  • 基本設定の各項目を、 設置するサーバの環境に合わせて修正します。

"putstyle.cgi" のカスタマイズ

  • 1 行目の perl のパスをWWWサーバの環境に合わせます。
  • 基本設定の各項目を、 設置するサーバの環境に合わせて修正します。
  • 以下のブラウザに対しては、デフォルトのスタイルを個別に設定できます。
    • Safari
    • Opera
    • Microsoft Internet Explorer 3.x
    • Microsoft Internet Explorer 4.x
    • Emacs/w3
    • 影鷹
    • iCab 2.x
    • Netscape Navigator 4.x

フォームの設置

スタイルを選択させるドロップダウンメニューを HTML 文書中に書き加えます。 必ずしも「トップページ」である必要はなく、 全ページにこのフォームを記述してしまってもいいです。

<form action="http://www.foo.ne.jp/~baa/cgi/getstyle.cgi"
 method="get">
 <hr />
 <fieldset>
  <legend>サイトのデザイン変更</legend>
  <table summary="">
   <tbody>
    <tr>
     <th><label
      for="mainstyle">基本スタイル:</label></th>
     <td>
      <select name="mainstyle" id="mainstyle">
       <option
        value="">No Change</option>
       <option
        value="light">Light Style</option>
       <option
        value="Default">Default Style</option>
       <option
        value="nostyle">Nostyle</option>
      </select>
     </td>
    </tr>
    <tr>
     <th><label
      for="ArekorePopup">「あれこれポップアップ」:</label></th>
     <td>
      <select name="ArekorePopup" id="ArekorePopup">
       <option
        value="">No Change</option>
       <option
        value="rich">Rich Style</option>
       <option
        value="standard">Standard Style</option>
       <option
        value="nostyle">Nostyle</option>
      </select</td>
    </tr>
    <tr>
     <th><label for="expires">cookieの削除:</label></th>
     <td><input
      type="checkbox"
      name="expires"
      id="expires"
      value="del" /></td>
    </tr>
    <tr>
     <th></th>
     <td><input
      type="hidden"
      name="confirm"
      value="pass" /><input
      type="submit"
      value="適用" /></td>
    </tr>
   </tbody>
  </table>
 </fieldset>
</form>

form 要素の action 属性値に "getstyle.cgi" へのパスを記述します。

上記 <input type="hidden" name="confirm" value="pass" /> の部分がないと、フォームの内容送信時に確認画面が出ます。

CGI の設置

getstyle.cgiputstyle.cgi とを、 WWWサーバの適当なディレクトリに置き、 パーミッションを 755 等、 不特定多数の人間に「読み込み」と「実行」が可能な状態にします。

選択された CSS を読み込ませたい各ページに SSI を埋め込みます。 もちろん cgi="" の内容は putstyle.cgi へのパスです。

<head>
(略)
<!--#exec cgi="/~baa/cgi/putstyle.cgi"-->
(略)
</head>

"getstyle.cgi" の機能

"getstyle.cgi" は QUERY_STRINGを読み込むので、 フォーム以外からも http://www.foo.ne.jp/~baa/cgi/getstyle.cgi?mainstyle=light のような URLでスタイル選択情報を渡すことが可能です。

"getstyle.cgi" にスタイル選択情報を渡した時、 ユーザが送信したページを CGIが判別できればそのページに、 判別できなかったり他サイトから渡されたような場合、 あるいは利用者が Refererを変更した時に、 万一それが getstyle.cgiになってしまった時は、 デフォルトの飛び先 に、 それぞれリダイレクトします。

関連リンク

サーバサイドによる切り替え / 総合研究

ブツ03:スタイルひとつくださいまぁとりあえずやってみるか(仮)
H&A氏による外部スタイル変更の手段に関する考察。

改訂履歴

v4.2 (2004年9月24日)

getstyle.cgi
  • 確認画面における、form要素の action属性値が正しくないのを修正。

v4.1 (2004年3月13日)

putstyle.cgi
  • 文末のセミコロンが抜けている箇所を修正 [ closs さん ありがとう!]

v4.0 (2004年1月30日)

getstyle.cgi
  • 「あれこれポップアップ」適用機能追加
  • 特定条件下で確認ページを表示するようにした
putstyle.cgi
  • 「あれこれポップアップ」適用機能追加

v3.0 (2003年11月11日)

getstyle.cgi
  • cookie情報を削除する機能を追加
putstyle.cgi
  • 対策ブラウザに「影鷹」を追加
  • 他の CGI から require しやすいようにした

v2.0 (2001年7月31日)

getstyle.cgi
  • 利用者が Refererを変更した時に、 getstyle.cgi 自体へのリダイレクトが無限に続いてしまう可能性を考慮 [H&A さん ありがとう!]
  • ローカルの CSS ファイルを読み込ませる機能を外した
  • METHOD を "put" から "get" に変更した
  • スタイル選択フォームをどのページに置いても動作するようにした
putstyle.cgi
  • 対策ブラウザに「iCab」を追加

v1.x (更新日失念)

忘れた。


サイト内検索

サイトのデザイン変更
使い方必ずお読み下さい