羽根愛好家

Blog Airplane Photo Bird Photo About Contact
見損ねたテレビ番組×2:前の記事
タグ関連の修正:次の記事

サイドバーのカスタマイズ

2009年 01月 13日

 ほぼテンプレートの状態で使っていたサイドバーですが,表示している内容によって内容を変えるようにしました。具体的には,
・メインのページを表示した時
・個別記事のページしたとき時
・各カテゴリのアーカイブを表示した時
・各カテゴリの月別アーカイブを表示した時
・月別アーカイブを表示した時
・検索結果を表示した時
の6パターン。細かいことをいうと,メインページと個別記事ページは同じものを表示しているとか,同じ検索結果でもタグ検索をした場合だけにタグリストが表示される,とか微妙な違いはありますが,一応,作業上の概念として6パターンということで。

 で,わりと軽い気持ちで始めた作業だったんですが,記事一覧系のウィジェットが思い通りに動かなくて意外に難儀。最終的には,かなり泥臭い方法で対処してしまいました。お恥ずかしい(笑

 MTのテンプレートが持っていた「最近の記事一覧」というウィジェットは,表示しているアーカイブ内の記事一覧を最近の物から10件表示する,という動きをします。なにげに僕のニーズに合わない作りなのでした。
 僕は,
・ブログ内記事のすべての記事の中から最近の物を10件表示する
・カテゴリアーカイブ内の中から最近の物を10件表示する
・カテゴリ月別アーカイブと月別アーカイブ内の記事をすべて表示する
というウィジェットが欲しかったので,これを作ります。頑張れば一つのウィジェット内で分岐して表示させることもできるのですが,考えてるうちに面倒くさくなったので,全部バラバラにウィジェットを作りました。
 各ウィジェットの内容は次のとおり。後者二つはテンプレートを少しアレンジしただけです。

●ブログ内記事のすべての記事の中から最近の物を10件表示する

<mt:If tag="BlogEntryCount">
  <mt:ArchiveList lastn="10">
    <mt:ArchiveListHeader>
<div class="widget-recent-entries widget-archives widget">
  <h3 class="widget-header">最近の記事</h3>
  <div class="widget-content">
    <ul>
    </mt:ArchiveListHeader>
      <li><a href="<$mt:Archivelink$>"><$mt:ArchiveTitle$></a></li>
    <mt:ArchiveListFooter>
    </ul>
  </div>
</div>
    </mt:ArchiveListFooter>
  </mt:ArchiveList>
</mt:If>

●カテゴリアーカイブ内の中から最近の物を10件表示する

<mt:If tag="BlogEntryCount">
  <mt:Entries lastn="10">
    <mt:EntriesHeader>
<div class="widget-recent-entries widget-archives widget">
  <h3 class="widget-header"><$mt:CategoryLabel$>: 最近の記事</h3>
  <div class="widget-content">
    <ul>
    </mt:EntriesHeader>
      <li><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></li>
    <mt:EntriesFooter>
    </ul>
  </div>
</div>
    </mt:EntriesFooter>
  </mt:Entries>
</mt:If>

●カテゴリ月別アーカイブと月別アーカイブ内の記事をすべて表示する

<mt:If tag="BlogEntryCount">
  <mt:Entries>
    <mt:EntriesHeader>
<div class="widget-recent-entries widget-archives widget">
  <h3 class="widget-header"><$mt:ArchiveTitle$>: 記事一覧</h3>
  <div class="widget-content">
    <ul>
    </mt:EntriesHeader>
      <li><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></li>
    <mt:EntriesFooter>
    </ul>
  </div>
</div>
    </mt:EntriesFooter>
  </mt:Entries>
</mt:If>


 
 次はページごとに表示すべきウィジェットセットの作成。これはいくつが方法があるんですが,↑でかなり泥臭いことをやってしまったので,ここは少しスマートに攻めるために,表示パターンごとにウィジェットセットを作ることにしました。下の画像の下の5個がそれです。

20090113_widgetset.jpg

 
 で,画像を見てピンと来た方もいると思うんですが,ここでもう一つ回りくどいことをやってて,「どのページでどのウィジェットセットを表示させるかを指定するウィジェット」を作り,「そのウィジェットを表示するだけのウィジェットセット」を作っています(笑
 なんでこんなことをやったかというと,MTのテンプレートにあるサイドバー用のモジュールテンプレートをまったく変更することなく作業が完了するから。一つの作業をするのに画面を行き来するのが面倒なので,ウィジェットの設定画面内で完結させてみました。 で,「どのページでどのウィジェットセットを表示させるかを指定するウィジェット」の中身は次のとおりです。

<mt:IfArchiveType archive_type="Individual">
  <$mt:WidgetSet name="メインインデックス"$>
</mt:IfArchiveType>

<mt:If name="main_index">
  <$mt:WidgetSet name="メインインデックス"$>
</mt:If>

<mt:IfArchiveType archive_type="Category">
  <$mt:WidgetSet name="カテゴリアーカイブ"$>
</mt:IfArchiveType>

<mt:IfArchiveType archive_type="Category-Monthly">
  <$mt:WidgetSet name="カテゴリ月別アーカイブ"$>
</mt:IfArchiveType>

<mt:IfArchiveType archive_type="Monthly">
  <$mt:WidgetSet name="月別アーカイブ"$>
</mt:IfArchiveType>

<mt:If name="search_results">
  <$mt:WidgetSet name="検索結果"$>
</mt:If>

 1月14日修正。↑の方法だとWebページ機能を使ったページとかでサイドバーが表示されなくて,あれこれ考えるのが面倒くさくなってきたので,特定の四つ以外はすべて同じサイドバーを表示するようにしました。MTIFで指定する環境変数は,このあたりを参考に。

<mt:If name="module_category_archives">
  <$mt:WidgetSet name="カテゴリアーカイブ"$>
<mt:ElseIf name="module_category-monthly_archives">
  <$mt:WidgetSet name="カテゴリ月別アーカイブ"$>
<mt:ElseIf name="datebased_monthly_archive">
  <$mt:WidgetSet name="月別アーカイブ"$>
<mt:ElseIf name="search_results">
  <$mt:WidgetSet name="検索結果"$>
<mt:Else>
  <$mt:WidgetSet name="メインインデックス"$>
</mt:If>
 
 これもかなり泥臭いです(笑。あと,基本的に自分のブログで使うためのものなので,ある程度の前提をもって作っています。簡単に言えば,特定アーカイブが存在しない場合のこと,を考えていない作りなのです。  あまりいないとは思うのですが,もし,これを参考になさる方がおられましたら,そのまま流用すると再構築時にエラーが出る場合があるので注意してください。
タグ:
  • MT
  • Web管理
|2009/01/13 17:54 |コメント(5)

コメント(5)

まぎらわしくてスミマセン(^^;;

おそらく大半の人が興味ないであろうMTネタですが,
以前に,カスタマイズした内容を忘れて痛い目にあったことがあるので,
自分の備忘録としてどんどん書きます(汗;;

たわわ | 2009年1月14日 10:02 | 返信

Vistaのサイドバーのことかと思ったのは秘密です
(ってバラしとるがな・・・orz)

なすかる | 2009年1月13日 20:55 | 返信

独り言。
そういえば,AboutとContactページのサイドバーが消えている……。
……明日治そう(笑

たわわ | 2009年1月13日 20:22 | 返信

師匠が気が付いた支障は失笑ものですね。
すみません,1箇所,<div>が閉じられてなかったみたいです。
IEとSafariでは問題なかったのですが,どっちもアレなブラウザということで(笑
とりあえず,治ってると思います。
operaでは試してませんが,FireFoxではOKです。
ありがとうございました。

たわわ | 2009年1月13日 20:16 | 返信

どうでもいいけど個別ページがOpera&FireFox 3だとすげー見難い。
紺地に黒字って何かの嫌がらせか?

支障師匠 | 2009年1月13日 19:36 | 返信

コメントする

最近の記事

  • そして完成へ
  • とりあえずコーディング
  • とりあえず温度センサー
  • 次のプロジェクト
  • シャッター制御の手直し
  • 牛歩のごとく進展
  • 天体写真にはまってる話
  • えこぼんぼん
  • 世界一周から帰ってきた飛鳥II
  • いざ!セントレア!

カテゴリ

  • 日々雑感
    • 雑感2009 (28)
    • 雑感2010 (2)
    • 雑感2011 (9)
  • 飛行機 (26)
    • 成田 (9)
    • 国内 (6)
    • 海外 (13)
  • 自然散策 (1)
    • 鳥 (3)
  • 物欲 (1)
    • PC関連 (5)
    • カメラ (9)
  • 感想
    • テレビ (11)
    • 映画 (2)
    • 書籍 (1)
  • Web管理 (14)

アーカイブ

タグ

タグリスト表示

検索

このブログについて

  • 購読する このブログを購読
Powered by
Movable Type 4.25
  and
This site is powered by CMS Designer.
Creative Commons 2.1 by-nc copyright(c) 2002-2009 tawawa-s.com. some rights reserved.