サイドバーの表示をメインページと同じにする

サイドバーの表示をメインページと同じにする

Posted at December 6,2007 1:11 AM
Tag:[Customize, MovableType, MTIf, Sidebar]

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" となります。

関連記事
zenback
人気エントリー
トラックバックURL


コメント

はじめまして。
MT4のテンプレートを借りさせて頂きました。
デザインや便利なカスタマイズ方法、細かな説明にいつも助けられています。
ありがとうございます。

実は、全体的にMTIfをあまり使っていないシンプルなテンプレートの用意ができればお願いしたいです。
サイドバーのあたりは特に複雑で、お恥ずかしながら、日記に使う程度の知識と使用量なので、絡み合うようになっていると数時間かかってもカスタマイズができず悩んでいます…。

シンプルなテンプレートで、あと順番に自分でMTIfを使っていって
覚えれたら一番かなと思っています;

できましたらご検討ください。
それでは、失礼いたします。

[1] Posted by はな : February 14, 2008 1:08 AM

>はなさん
こんばんは。
テンプレートご利用ありがとうございます。
ご要望の件ですが、MTIf を取り外すと MT3 と同じ構成のテンプレートになり、アーカイブテンプレートの作成やアーカイブマッピングが必要になり、モジュールの利用も制限されますが、そのようなものでもよろしいでしょうか(テンプレートセットなので入れ替え自体は簡単だと思います)。
いずれにしても今、時間がとれませんので、公開できるのはしばらく先になります。
それではよろしくお願い致します。

[2] Posted by yujiro logo : February 17, 2008 12:17 AM

はじめまして。MT4のテンプレを使いながら「MTWEBデザインの新しいルール
」で勉強させていただいております。

ウェブページやコメントページでカテゴリが表示されず、メインと同じように
サイドバーを表示させたくて、サイドバーの<MTIf name="module_category_archives"></MTIf>をはずしたら、カテゴリリンクが切れてしまいました。
カテゴリリンクを生かしたまま、ウェブページ等にカテゴリを表示させる方法がありましたら教えていただきたいです。よろしくお願い致します。

[3] Posted by nanaka : June 7, 2008 10:28 AM

>nanakaさん
こんにちは。
拙著お買い上げくださりありがとうございます。
ご質問の件ですが、下記のプラグインが有効と思われますので、お試しください。

メインページと同じ情報をアーカイブページで表示する indexcontext プラグイン

設置方法等、不明な点がありましたら、お手数ですが再度ご連絡ください。
それではよろしくお願い致します。

[4] Posted by yujiro logo : June 9, 2008 11:11 AM

こんにちは。3で質問したnanakaです。ご返答ありがとうございました。
上記の方法でindexcontextプラグインをDLして、
サイドバーのカテゴリに記述してみたのですがうまくいきませんでした。。
WidgetManagerももとから入っていたのでいろいろ試行錯誤してみたのですが
ウェブページに反映されません・・
大変お手数ですが、具体的な設置方法(カテゴリ)を教えてくださると嬉しいです。
よろしくお願いいたします。。


[5] Posted by nanaka : June 9, 2008 3:49 PM

こんにちは。3と5で質問したnanakaです。
ウェブページ等のサイドバーにカテゴリが表示されない件、
なぜかサイドバー内でカテゴリの位置(コンテンツの順序)を変えたら
表示されました!
長い間悩んでいたのですが解決しました~^^
お手数おかけしました~。

[6] Posted by nanaka : June 16, 2008 11:28 AM

>nanakaさん
こんにちは。
ご返事遅くなってすいません。
ご質問の件、自己解決されたようで良かったです。
ではでは!

[7] Posted by yujiro logo : July 2, 2008 1:48 PM
コメントする
greeting

*必須

*必須(非表示)


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

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

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

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