カテゴリ別に見た目を切り替える(サイドバーの状態を変える)
カテゴリ別に見た目を切り替える方法のひとつを説明します。この方法は、カテゴリ(※カテゴリのみではなくエントリやメインインデックスページにも有効)のサイドバーの見た目を切り替えます。準備したテンプレートが、3カラム用であるとします。カテゴリページでは2カラムにしたいときに、以下のような方法があります。
このサンプルは、mtde.infoのテンプレートを用いて説明を進めます。mtde.infoのXHTML構造は、以下のようになっています。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" id="sixapart-standard">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>Sample</title>
</head>
<body>
<div id="headcontent">
<h1>This Is a Sample</h1>
<p id="sitedescription">This In a Sample XHTML Pages.</p>
</div>
<div id="maincontainer">
<div id="maincontent">
<p>メインコンテンツ</p>
</div>
<div id="subcontent">
<p>サイドバー1</p>
</div>
<div id="extracontent">
<p>サイドバー2</p>
</div>
</div>
<div id="footcontent">
<address>アドレス</address>
</div>
</body>
</html>
ブログ記事リストのテンプレートの変数宣言部分(テンプレートの先頭付近です)へ、次のような一行のコードを書き足します。
<MTSetVar name="colmn" value="">
colmnという名前の変数へ、空白が代入されています。後述しますが、これは、ブログの初期の設計どおりのサイドバーカラム数・スタイルであるということになります。
以下のように、colmnという名前の変数へ、2を代入すると、サイドバーのうち一本を削除し、2カラムにするということになります。
<MTSetVar name="colmn" value="2">
次に、メイン記事エリアmaincontentのdiv部分を改造します。
改造前
<div id="maincontent">
改造後
<div id="maincontent<MTGetVar name="colmn">">
colmn変数へ2という数字を値として与えたときには、それがそのまま「maincontent」というid名へ付加され、「maincontent2」という名前に変わる仕組みです。
サイドバーにも細工をします。2カラムのとき表示したくないサイドバーへ、以下のように大外をMTIfでcolmn変数に値が入っていなければ実行、と記述します。つまりこの部分は、colmn変数に2という値が入っている(=2カラムである)場合は実行されずにスルーされます。
<MTIf name="colmn" eq=""><MTIgnore>2カラム指定がないときのみ</MTIgnore>
<div id="subcontent">
...(サイドバーの記述)
</div>
</MTIf>
CSSには、3カラム用のmaincontent定義と2カラム用のmaincontent2の記述を同時に併記しておきます。大きな違いは、maincontent2の幅がmaincontentとはサイドバー一本ぶん広いことです。
#maincontent,#maincontent2 {
float:left;
line-height:1.5;
margin-right:20px;
text-align:left;
width:500px;
clear:both;
}
#maincontent img, #maincontent2 img {
margin:15px 10px 15px 0;
}
#maincontent li.nomark, maincontent2 li.nomark {
list-style:none;
margin-left:10px;
}
/* 2 Column */
#maincontent2 {
width:700px;
}
この方法は、カテゴリのみではなく、エントリやメインインデックス、アーカイブ、検索ページなど各テンプレートモジュールへ実装すれば、すべてのテンプレートのサイドバーの本数を制御できます。
2カラム→3カラム、3カラム→2カラムへの切り替えは容易で、各テンプレートモジュールの先頭のcolmn変数を空白にするか、2という値を与えるかのみでサイドバーの本数を切り替えることができます。
このmtde.info サイトは、この手法でエントリページを2カラム化しています。
- ページ先頭へ
- 前のエントリ: カテゴリ別に見た目を切り替える(hn見出しの背景画像)
- 次のエントリ: カテゴリ別に見た目を切り替える(テンプレートを切り替える)
- カテゴリ:カテゴリ関連サンプル
カテゴリ関連サンプル
- 素ノーマルカテゴリリスト
- ドロップダウンカテゴリリスト
- 現在のエントリの属するカテゴリ内の他のエントリを列挙
- 現在のエントリの属するカテゴリ内のサブカテゴリ内のエントリを列挙
- 全カテゴリからエントリを3件ずつ表示
- 全てのエントリを展開したカテゴリリスト
- 現在のエントリの属するカテゴリのエントリを展開したカテゴリリスト
- 狙ったカテゴリのみを表示するカテゴリリスト
- 狙ったカテゴリのみを表示してエントリ展開するカテゴリリスト
- 狙ったカテゴリのみを隠すカテゴリリスト
- 現在のカテゴリであれば強調表示するカテゴリリスト
- プラグインを使用しないカテゴリ並べ替え
- カテゴリ内エントリの最新更新日時を表示
- 現在のエントリの属するカテゴリのエントリを展開・強調表示したカテゴリリスト
- カテゴリ別に見た目を切り替える(異なる画像の差し込み)
- カテゴリ別に見た目を切り替える(カテゴリリード文へ異なる背景画像)
- カテゴリ別に見た目を切り替える(hn見出しの背景画像)
- カテゴリ別に見た目を切り替える(サイドバーの状態を変える)
- カテゴリ別に見た目を切り替える(テンプレートを切り替える)