Movable Type 4 でカテゴリー別にデザインを切り替える方法(その1)

Movable Type 4 でカテゴリー別にデザインを切り替える方法(その1)

Posted at February 19,2008 2:00 AM
Tag:[Category, MovableType, Template]

Movable Type 4 でカテゴリー別にデザインを切り替える方法を、何回かに分けて紹介します。

1.カテゴリー別にアーカイブテンプレートを独立させる

2009.08.21 注:カテゴリー別にアーカイブテンプレートを独立させる方法ではカテゴリーを適正に制御することができません。カテゴリー別にデザインを切り替えるには、「Movable Type 4 でカテゴリー別にデザインを切り替える方法(その2)」「Movable Type 4 でカテゴリー別にデザインを切り替える方法(その3)」を参照願います。

カテゴリーアーカイブのデザインを変更するために、カテゴリー別に複数のアーカイブテンプレートを作る方法があります。その際、カテゴリーアーカイブテンプレート全体を MTIfCategory タグで括ります。MTIfCategory タグの name モディファイアには、カテゴリー名が重複しないように設定します。

カテゴリー1

<MTIfCategory name="カテゴリー1">
    :
(カテゴリー1用のテンプレート)   
    :
</MTIfCategory>

カテゴリー2

<MTIfCategory name="カテゴリー2">
    :
(カテゴリー2用のテンプレート)   
    :
</MTIfCategory>

カテゴリー3

<MTIfCategory name="カテゴリー3">
    :
(カテゴリー3用のテンプレート)   
    :
</MTIfCategory>

この方法には、次のような特徴があります。

  1. カテゴリーアーカイブテンプレートの独立性
  2. カテゴリー別にパスを変更できる
  3. カテゴリー別に異なるパスを設定すると「優先」の制約が発生する

まず、カテゴリーアーカイブテンプレートを独立させ、テンプレートとカテゴリーを1:1の対応にするので、下のように編集対象のカテゴリーが視覚的に分かりやすくなるというメリットがあります。また、テンプレートの内容にもよりますが、この方法であれば、Movable Type 4 の制御系タグをほとんど使わずにすむかもしれません。

アーカイブテンプレート一覧

また、カテゴリー別に異なるパスを与えたい場合、この方法以外に選択の余地はありません。テンプレートタグをパス欄に設定すれば個別に設定することも可能です。

最後の「カテゴリー別に異なるパスを設定すると「優先」の制約が発生する」の意味は、まず、同一アーカイブ種別のテンプレートを複数作成すると、「優先」の問題が発生します。「優先」とは、他のページからあるアーカイブ種別のアーカイブにリンクする場合のリンク先を決めるためのもので、優先にするテンプレートにはチェックをつけます。

アーカイブテンプレート一覧

例えば、カテゴリー1・カテゴリー2・カテゴリー3用のアーカイブテンプレートを、それぞれ別のアーカイブテンプレートで作成した場合、どれかひとつのアーカイブテンプレートが「優先」に、残りが「非優先」になります。

もし、カテゴリー別にパスを変更した場合、メインページなどでカテゴリーリストを、MTTopLevelCategories タグで表示すると、「優先」が設定されたカテゴリーのパスで表示されるので、非優先のカテゴリーアーカイブページはデッドリンクになります。

ただし、全てのカテゴリーアーカイブが同じパスであれば、非優先カテゴリーアーカイブへのリンクも、優先カテゴリーアーカイブで生成されたリンクが利用できます(たまたまそうなるだけであり、手法としては適切ではないかもしれません)。

2.スタイルシートについて

ここでは2つの方法が考えられます。

まず、head 要素が、独立させたカテゴリーアーカイブにそれぞれ含まれているのであれば、head 要素内にカテゴリー用のスタイルシートを呼び出す link 要素をそのまま記述します。これが一番シンプルな方法です。

もうひとつは、head 要素をテンプレートモジュールとして呼び出している場合は、MTIfCategory タグブロック内に次のような MTSetVar タグを記述します。

<MTIfCategory name="cat1">
<mt:setvar name="style" value="[カテゴリー用スタイルシートのファイル名]">
<$MTInclude module="ヘッダー"$>
    :
</MTIfCategory>

そして、「ヘッダー」モジュールには次のように記述します。

<mt:if name="category_archive">
<link rel="stylesheet" href="<$MTBlogURL$><$mt:getvar name="style"$>" type="text/css" title="<$MTCategoryLabel encode_html="1"$>" media="screen,tv" />
</mt:if>

または、MTCategoryDescription タグにスタイルシートのファイル名(下のサンプルでは拡張子なし)を設定しておき、「ヘッダー」モジュールだけで呼び出せる方法もあります。

<mt:if name="category_archive">
<link rel="stylesheet" href="<$MTBlogURL$><$MTCategoryDescription$>.css" type="text/css" title="<$MTCategoryLabel encode_html="1"$>" media="screen,tv" />
</mt:if>

異なるカテゴリーで同じデザインを適用したい場合は、MTCategoryDescription タグに同じ名称を記述しておきます。

後者の方法は、他のカテゴリー分割方法でも共通に使えます。

2008.02.20
カテゴリーパスの記述を一部修正しました。


関連記事
トラックバックURL


コメント

MT4.1のテンプレいただきました。『MT WEBデザインの新しいルール』にもお世話になっています。カテゴリーごとにデザインを変える、魅力的ですね~。初コメでした!

[1] Posted by amamiya logo : February 19, 2008 7:07 PM

カテゴリの説明に固有のパスを仕込んでおいて、
アーカイブマッピングのパスにMTタグを突っ込んでやれば、
異なるパスに吐き出せますよ。。

この場合は1つの記事リストに分岐を3つ入れて、
読みやすくしたいのであれば、モジュールで管理ですかね。。

MT4.1を使うのであれば、カテゴリにパス用のフィールドを足すのが良いかも。
試してないので正しく動くかわからないですけど(汗

[2] Posted by Y : February 19, 2008 8:24 PM

>amamiyaさん
こんばんは。
拙著お買い上げくださりありがとうございます。
サイト構築、うまくできたようでよかったです。
また、コメントありがとうございました。
ではでは!

>Yさん
こんばんは。
ご指摘ありがとうございました。テンプレートタグが使えることを完全に失念しておりました。
モジュール化については「その2」以降で紹介していく予定ですが、いいアイデアがありましたらよろしくお願い致します。

[3] Posted by yujiro logo : February 20, 2008 12:44 AM

こんにちは。
カテゴリーアーカイブの一つのカテゴリのタイトル画像を変更したくて
(15ページくらいあるカテゴリの一覧表示があるのですが、その中一つのページのみのタイトル画像を変更したい)
上記を参考のさせてもらったのですが、
分からないところがあり、教えてていただけますでしょうか?

1.カテゴリー別にアーカイブテンプレートを独立させる

ここで新たにブログ記事リストを作成したのですが、
ファイルへのリンクはどうすればいいのでしょうか?

もともとあるブログ記事リストに指定したカテゴリは表示されるのですが、新たに作成したブログ記事リストはサイトを開くと真っ白で何も表示されませんが、どうしてでしょうか?
真っ白になるということは読み込めて入るのかな?とも思ったのですが・・・

上記の方法ですと、カテゴリ全て新たにテンプレートを作らなくては
いけませんよね?

一つのページのタイトル画像のみを変更したい場合、
他に方法はありますか?


分からない事だらけで色々探し回っているのですが、
なかなか前に進めずにいます。
お忙しいところ恐れ入ります。
お返事いただけると本当に助かります。
どうぞよろしくお願いいたします。(_ _)


[4] Posted by たけ : August 21, 2009 6:39 AM

>たけさん
こんにちは。
事後で大変申し訳ありませんが、この記事の方法ではカテゴリーページを適正に制御することができません。以下の記事を参考に再度設定していただけますでしょうか(記事内容が不適切であることは別途追記致します)。

http://www.koikikukan.com/archives/2008/02/20-012525.php
http://www.koikikukan.com/archives/2008/02/20-012525.php

それではよろしくお願い致します。

[5] Posted by yujiro logo : August 21, 2009 12:49 PM

小粋空間様

ありがとうございました。
できました!!

ここだけで1週間以上悩んで解決できずにいたので
本当に感謝します!!

ありがとうございました。


今後とも参考にさせていただきます(_ _)

[6] Posted by たけ : August 25, 2009 6:26 AM

>たけさん
こんにちは。
ご連絡ありがとうございました。
こちらこそ、誤った情報を放置してしまい、すいませんでした。
それではよろしくお願い致します。

[7] Posted by yujiro logo : August 26, 2009 2:33 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)