Movable Type 備忘録

 テンプレートのスタイルを動的に切り替える

おはよです^^

昨日午前中のうちに「バベル」を観てきました。
どっと疲れたのかお昼寝してしまって、挙句の果てに寝れなくて夜更かししてるbzbellです (; ̄∇ ̄A

今日も午前の部で「ハンニバル・ライジング」を観に行く予定なんだけど…大丈夫だろうか (。-ω-)

それはさておき、訪問者さんからのご質問がありましたので、この場をお借りしてお答えします。

わたしのサイトで配布しているテンプレートの一部には、ナビゲーションバーにて各色のテンプレートを切り替えられるようにしたものがあります。
テンプレート・フォー・ユー1、2、6
テンプレート・フォー・ユー3、4、7

今回はスタイル切り替えの方法についてのご紹介です( ̄∇ ̄)/

元々、わたしは1つのテンプレートでいろんなスタイルを楽しむ(切り替える)のを目的としています。
なので、XHTMLは変更せずにCSSが異なるテンプレートの配布が主です。

上記URLのテンプレートでは、JavaScriptを使って各色のCSS(イメージ含む)を切り替えています。

そのJavaScriptは、何年も前に小粋空間さんのところで紹介されてたもので、A List Apartさんで配布されているものを使わせてもらってますの。
Alternative Style: Working With Alternate Style Sheets

スタイルシート切り替えのための環境

以下に上記URLのテンプレートの環境について記します。

  1. http://bzbell.com/annex/
  2.   |
  3.   +-- index.html
  4.   |
  5.   +-- mt-memo/
  6.   | +-- base-weblog.css
  7.   | |
  8.   | +-- black/ <-- テンプレート・フォー・ユー1用
  9.   | | +-- 1column-fixed.css
  10.   | | +-- ajax-loader.gif
  11.   | | | :
  12.   | | | (テンプレート・フォー・ユー1用イメージファイルたくさん)
  13.   | | | :
  14.   | | +-- stlipe.png
  15.   | |
  16.   | +-- brown/ <-- テンプレート・フォー・ユー2用
  17.   | | +-- 1column-fixed.css
  18.   | | +-- ajax-loader.gif
  19.   | | | :
  20.   | | | (テンプレート・フォー・ユー2用イメージファイルたくさん)
  21.   | | | :
  22.   | | +-- stlipe.png
  23.   | |
  24.   | +-- sakura/ <-- テンプレート・フォー・ユー6用
  25.   | | +-- 1column-fixed.css
  26.   | | +-- ajax-loader.gif
  27.   | | | :
  28.   | | | (テンプレート・フォー・ユー6用イメージファイルたくさん)
  29.   | | | :
  30.   | | +-- stlipe.png
  31.   | |

mt-memo/ディレクトリを基準に、各テンプレートで共通なスタイルシート(base-weblog.css)を直下に配置します。
そして、各テンプレート固有のスタイルシートおよび、イメージファイルは、各ディレクトリ(black/、brown/、sakura/)に格納します。

カスタマイズ

  1. まずJavaScriptを入手します。
    こちらのAlternative Style: Working With Alternate Style Sheetsからstyleswitcher.jsを入手してください。

  2. 入手したらstyleswitcher.jsをサーバにアップロードします。
    アップロード先はどこでも構いませんので、各自の環境に合わせてアップロードします。

  3. 次にテンプレートを変更します。
    通常だとスタイルシートの定義として、<head>~</head>の間に以下のように記述すると思います。

    1. <link rel="stylesheet" href="http://●●●/styles-site.css" type="text/css" />

    ここの部分で切り替えるスタイルシートすべてを定義します。
    具体的には以下のようになります。

    スタイルシート定義文

    1. <link rel="stylesheet" href="http://bzbell.com/annex/mt-memo/sakura/1column-fixed.css" type="text/css" title="css-sakura" />
    2. <link rel="alternate stylesheet" href="http://bzbell.com/annex/mt-memo/black/1column-fixed.css" type="text/css" title="css-black" />
    3. <link rel="alternate stylesheet" href="http://bzbell.com/annex/mt-memo/brown/1column-fixed.css" type="text/css" title="css-brown" />

    上記は実際にわたしのサイトで使っているものです。
    優先度があって、1番上に定義した(1番上のように記述した)ものがデフォルトのスタイルシートとなります。
    初めて表示した場合には、このスタイルシートが適用されます。

    2番目以降で、スタイルシートの数だけ増やすことができます。
    青い字の部分を各自の環境に合わせてURLを変更します。

    重要なところは赤い字の部分と緑の字の部分になります。

    1行目の赤い字の部分と2番目以降では異なりますのでご注意ください。

    緑の字の部分で各スタイルシートの識別名称を指定します。
    ココが重複してしまうと思った動作をしなくなりますのでご注意ください。

  4. 次にナビゲーションバーを変更します。
    わたしのサイトで使っているナビゲーションバーを以下に抜粋します。

    ナビゲーションバーの変更

    1. <div id="navibar">
    2.     <ul>
    3.         <li><a href="javascript:void(0);" onclick="setActiveStyleSheet
    4.             ('css-black','http://bzbell.com/annex/mt-memo/black/1column-fixed.css'); return false;">Black</a></li>
    5.         <li><a href="javascript:void(0);" onclick="setActiveStyleSheet
    6.             ('css-brown','http://bzbell.com/annex/mt-memo/brown/1column-fixed.css'); return false;">Brown</a></li>
    7.         <li><a href="javascript:void(0);" onclick="setActiveStyleSheet
    8.             ('css-sakura','http://bzbell.com/annex/mt-memo/sakura/1column-fixed.css'); return false;">Sakura</a></li>
    9.     </ul>
    10. </div>

    青い字の部分は各スタイルシートのURLを記述します。
    ココを間違えると思った動作しませんのでご注意ください。

    赤い字の部分がブラウザから見たメニュー名称です。
    そして、緑の字の部分が先ほど説明した、各スタイルシートの識別名称になります。
    ココも間違えると思った動作しませんのでご注意ください。

  5. 最後に、styleswitcher.jsの記述を<head>~</head>の間に追加します。

    JavaScriptの定義

    1. <script type="text/javascript" src="http://●●●/js/styleswitcher.js"></script>
  6. 一通り変更したら、保存して再構築します。
    そして、ナビゲーションバーで各スタイルの適用確認を行います。

以上で、スタイルシートの切り替えは完了です。

今回使用したstyleswitcher.jsは、適用されたスタイルをCookieで保存します。
これにより、前回適用されたスタイルがデフォルトとして表示されるようになります。

表示確認中はキャッシュをクリアするなどしてください。

以上です。

 Trackback Pings(0)

No trackbacks found.

 Comments(2)

#1: Posted by みっく @ May 6, 2007 [REPLY]
user-pic

こんばんはw

無事変更することができましたw
ありがとうございました^^

個性あふれる魅せるレイアウト本当に素敵ですw
これからも遊びにきますww

では、失礼します~w

#2: Posted by bzbell @ May 6, 2007 [REPLY]
user-pic

>>1 みっく さん

こんばんわ^^

> 無事変更することができましたw

よかった (; ̄∇ ̄A ほっ

> これからも遊びにきますww

はい。これからもよろしくです(●´∀`●)

 Post a Comment

 

コメント用フィード