サイドバーの表示をメインページと同じにする
Movable Type 4 で、サイドバーの表示をメインページと同じにするカスタマイズです。
複数の方から「各ページのサイドバーの表示をメインページを同じしたいのですが」という質問を頂きましたので、このエントリーで紹介致します。
ここでは当ブログの配布テンプレート「Movable Type テンプレート」を例に説明しますが、デフォルトテンプレートでも同様のカスタマイズが可能です。
なお、このエントリーのカスタマイズを行うだけではメインページと全く同じ表示にならないのですが、そのことについては次回のエントリーで解説します。
1.ページによってサイドバーの表示内容が異なる仕組み
ページによってサイドバーの表示内容が異なるのは、サイドバーの各リストを MTIf タグで括り、表示するページを振り分けているためです。MTIf は Movable Type 4 で新たに追加されたテンプレートタグで、ある値を判定することで処理を振り分ける、という機能をもっています。
例えば、タグクラウドがメインページでしか表示されないのは、下のように MTIf タグで全体を括っています。
<MTIf name="main_index">
<dt class="sidetitle">
Tag Clouds
</dt>
<dd class="side">
<ul id="tags">
<MTTags>
<li class="module-list-item taglevel<$MTTagRank$>">
<a href="<$MTTagSearchLink$>"><$MTTagName$></a>
</li>
</MTTags>
</ul>
</dd>
</MTIf>
そして、MTIf タグの name 属性に記述された main_index という変数の値が "1" の場合にのみ、MTIf タグブロック内部が実行(=再構築対象)されます。
main_index という変数は、メインインデックスを再構築する時だけ "1" になる仕組みになっています。
また、月別アーカイブリストは、
<MTIf name="module_monthly_archives">
<MTIfArchiveTypeEnabled archive_type="Monthly">
<dt class="sidetitle">
Monthly Archives
</dt>
<dd class="side">
<ul>
<MTArchiveList archive_type="Monthly">
<li><a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a> [<$MTArchiveCount$>]</li>
</MTArchiveList>
</ul>
</dd>
</MTIfArchiveTypeEnabled>
</MTIf>
と、MTIf タグの name 属性に module_monthly_archives という変数名を用いています。そして月別アーカイブの再構築時だけ module_monthly_archives の値が "1" になり、MTIf タグブロック内が再構築対象となります。
2.メインページと同じ表示にする方法
方法は、各リストを括っているMTIf タグを外すだけです。ただし、「最近のエントリー」については冒頭に記した通り、MTIf タグを外しただけではメインページと同じ表示にならないので、その点は予めご了承ください。
以下、リスト別に示します。赤色部分を削除してください。
最近のエントリー
<MTIf name="module_recent_entries">
<dt class="sidetitle">
Recent Entries
</dt>
<dd class="side">
<ul>
<MTEntries lastn="10">
<li><a href="<$MTEntryPermalink$>" title="e<$MTEntryID$>"><$MTEntryTitle$></a></li>
</MTEntries>
</ul>
</dd>
</MTIf>
タグクラウド
<MTIf name="main_index">
<dt class="sidetitle">
Tag Clouds
</dt>
<dd class="side">
<ul id="tags">
<MTTags>
<li class="module-list-item taglevel<$MTTagRank$>">
<a href="<$MTTagSearchLink$>"><$MTTagName$></a>
</li>
</MTTags>
</ul>
</dd>
</MTIf>
カテゴリーリスト
<MTIf name="module_category_archives">
<MTIfArchiveTypeEnabled archive_type="Category">
<dt class="sidetitle">
Categories
</dt>
<dd class="side">
<div id="categories">
<MTTopLevelCategories>
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]
<MTElse>
<li><MTCategoryLabel>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse max_depth="3">
</li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTTopLevelCategories>
</div>
</dd>
</MTIfArchiveTypeEnabled>
</MTIf>
月別アーカイブリスト
<MTIf name="module_monthly_archives">
<MTIfArchiveTypeEnabled archive_type="Monthly">
<dt class="sidetitle">
Monthly Archives
</dt>
<dd class="side">
<ul>
<MTArchiveList archive_type="Monthly">
<li><a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a> [<$MTArchiveCount$>]</li>
</MTArchiveList>
</ul>
</dd>
</MTIfArchiveTypeEnabled>
</MTIf>
3.注意事項
タグクラウドは再構築のパフォーマンスに影響があるため、他のアーカイブで表示させない(MTIf タグを外さない)ことをお勧めします。
表示させたい場合は Ajax モジュール化を行ないましょう。
4.サイドバーの MTIf タグに設定されている変数名
参考までに、デフォルトテンプレート(3 カラム)で、各リストの MTIf タグに設定されている変数名をまとめました(配布テンプレートも基本的にこの仕組みにしたがっています)。
リスト名 | 変数名 |
---|---|
タグクラウド | main_index |
ユーザーアーカイブリスト | module_author_archives |
月別アーカイブリスト | module_monthly_archives |
月別カテゴリーアーカイブリスト | module_category-monthly_archives |
月別ユーザアーカイブリスト | module_author-monthly_archives |
最近のエントリー | module_recent_entries |
アイテムリスト | main_index |
サブカテゴリーリスト | module_category_archives |
上記の各変数名がどのページで "1" になるかについては「予約変数一覧 for Movable Type 4(その1)」を参考にしてください。
なお、
- main_index
- module_recent_entries
の2つの変数については、どちらもメインページのみで "1" となります。
- Movable Typeのカテゴリーアーカイブページでブログ全体のブログ記事一覧を表示する
- Movable Type 5.0(MT5.0)以降でアーカイブURLにサブドメインを適用する
- MTArchiveList タグブロック内で使えるテンプレートタグ
- 予約変数一覧 for Movable Type 4.2
- アーカイブページのリストの表示内容が異なる理由
- 予約変数一覧 for Movable Type 4(その2)
- 予約変数一覧 for Movable Type 4(その1)
- アーカイブのブログ記事一覧をサイドバーに表示する
- Movable Type 4 のアーカイブリスト表示の仕組みを探る
- アーカイブページに「最近のコメント」「最近のトラックバック」を表示する
はじめまして。
MT4のテンプレートを借りさせて頂きました。
デザインや便利なカスタマイズ方法、細かな説明にいつも助けられています。
ありがとうございます。
実は、全体的にMTIfをあまり使っていないシンプルなテンプレートの用意ができればお願いしたいです。
サイドバーのあたりは特に複雑で、お恥ずかしながら、日記に使う程度の知識と使用量なので、絡み合うようになっていると数時間かかってもカスタマイズができず悩んでいます…。
シンプルなテンプレートで、あと順番に自分でMTIfを使っていって
覚えれたら一番かなと思っています;
できましたらご検討ください。
それでは、失礼いたします。
>はなさん
こんばんは。
テンプレートご利用ありがとうございます。
ご要望の件ですが、MTIf を取り外すと MT3 と同じ構成のテンプレートになり、アーカイブテンプレートの作成やアーカイブマッピングが必要になり、モジュールの利用も制限されますが、そのようなものでもよろしいでしょうか(テンプレートセットなので入れ替え自体は簡単だと思います)。
いずれにしても今、時間がとれませんので、公開できるのはしばらく先になります。
それではよろしくお願い致します。
はじめまして。MT4のテンプレを使いながら「MTWEBデザインの新しいルール
」で勉強させていただいております。
ウェブページやコメントページでカテゴリが表示されず、メインと同じように
サイドバーを表示させたくて、サイドバーの<MTIf name="module_category_archives"></MTIf>をはずしたら、カテゴリリンクが切れてしまいました。
カテゴリリンクを生かしたまま、ウェブページ等にカテゴリを表示させる方法がありましたら教えていただきたいです。よろしくお願い致します。
>nanakaさん
こんにちは。
拙著お買い上げくださりありがとうございます。
ご質問の件ですが、下記のプラグインが有効と思われますので、お試しください。
メインページと同じ情報をアーカイブページで表示する indexcontext プラグイン
設置方法等、不明な点がありましたら、お手数ですが再度ご連絡ください。
それではよろしくお願い致します。
こんにちは。3で質問したnanakaです。ご返答ありがとうございました。
上記の方法でindexcontextプラグインをDLして、
サイドバーのカテゴリに記述してみたのですがうまくいきませんでした。。
WidgetManagerももとから入っていたのでいろいろ試行錯誤してみたのですが
ウェブページに反映されません・・
大変お手数ですが、具体的な設置方法(カテゴリ)を教えてくださると嬉しいです。
よろしくお願いいたします。。
こんにちは。3と5で質問したnanakaです。
ウェブページ等のサイドバーにカテゴリが表示されない件、
なぜかサイドバー内でカテゴリの位置(コンテンツの順序)を変えたら
表示されました!
長い間悩んでいたのですが解決しました~^^
お手数おかけしました~。
>nanakaさん
こんにちは。
ご返事遅くなってすいません。
ご質問の件、自己解決されたようで良かったです。
ではでは!