Movable Type 備忘録

 カテゴリと最近のエントリ一覧をいっしょに表示

  • Jun012008
  • Vote:
    http://bizcaz.com/archives/2008/06/01-154302.php
  • Categories: Tips
  • Tags:
  • Social Bookmark

カテゴリを階層表示しつつ、最近のエントリを 3 件分表示する場合のタグを以下に記します。

  1. <MTTopLevelCategories>
  2.   <MTSubCatIsFirst><ul class="catlist"></MTSubCatIsFirst>
  3.  
  4.   <mt:IfNonZero tag="MTCategoryCount">
  5.       <li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><$MTCategoryLabel decode_html="1" remove_html="1"$></a> <span class="catcnt">[<$MTCategoryCount$>]</span>
  6.  
  7.           <ul class="entlist">
  8.           <MTEntries lastn="3">
  9.               <li><a href="<$MTEntryPermalink$>" title="<$MTEntryExcerpt convert_breaks="1" words="20"$>"><$MTEntryTitle$></a> <span class="entdate"><$MTEntryDate format="%Y/%m/%d"$></span></li>
  10.           </MTEntries>
  11.           </ul>
  12.   <mt:Else>
  13.       <li><$MTCategoryLabel decode_html="1" remove_html="1"$> <span class="catcnt">[<$MTCategoryCount$>]</span>
  14.   </mt:IfNonZero>
  15.  
  16.   <$MTSubCatsRecurse max_depth="5"$>
  17.   </li>
  18.   <MTSubCatIsLast></ul></MTSubCatIsLast>
  19. </MTTopLevelCategories>

説明

  1. まず MTTopLevelCategories ブロックタグを使って全カテゴリ一覧を表示します。

  2. MTSubCatIsFirst、MTSubCatIsLast ブロックタグは現在のカテゴリの最初と最後にだけ実行される条件タグです。このタグを利用することで ul の最初と閉じをやってます。
    階層構造にするにはこのタグがポイントです ( ̄∇ ̄)b

  3. MTIfNonZero 条件タグを使って、現在のカテゴリに属するエントリがあるかどうかチェック(MTCategoryCount ファンクションタグでエントリ数取得)、あれば最近のエントリ 3 件分を一覧表示します。

  4. MTSubCatsRecurse ファンクションタグは、現在のカテゴリにサブカテゴリがある場合、その際 max_depth モディファイアで指定した階層分のサブカテゴリを表示することができます。

上記ソースを使うと以下のような表示ができます。

ちなみに上記ソースから MTSubCatIsFirst、MTSubCatIsLast ブロックタグを削除して、その代わりに MTTopLevelCategories ブロックタグを ul タグで囲むと以下のような表示になります。

上記表示は以下のようなソースになります。

  1. <ul>
  2. <MTTopLevelCategories>
  3.     <mt:IfNonZero tag="MTCategoryCount">
  4.         <li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><$MTCategoryLabel decode_html="1" remove_html="1"$></a> <span class="catcnt">[<$MTCategoryCount$>]</span>
  5.  
  6.             <ul class="entlist">
  7.             <MTEntries lastn="3">
  8.                 <li><a href="<$MTEntryPermalink$>" title="<$MTEntryExcerpt convert_breaks="1" words="20"$>"><$MTEntryTitle$></a> <span class="entdate"><$MTEntryDate format="%Y/%m/%d"$></span></li>
  9.             </MTEntries>
  10.             </ul>
  11.     <mt:Else>
  12.         <li><$MTCategoryLabel decode_html="1" remove_html="1"$> <span class="catcnt">[<$MTCategoryCount$>]</span>
  13.     </mt:IfNonZero>
  14.  
  15.     <$MTSubCatsRecurse max_depth="5"$>
  16.     </li>
  17. </MTTopLevelCategories>
  18. </ul>

以上です。
ちょっとした見出し表示に使ってみてはどうでしょ ( ̄∇ ̄)b

- 2008.06.02 追記 -
特定のカテゴリを除外する方法については コメントを参考にしてください。

 Trackback Pings(1)

from 笑むなAikoの『お玉杓子は飲み物です』

FC2のカスタマイズでもよく見るカテゴリに新着記事の表示ですが、MovableTypeでもタグだけで出来てしまうんですね~。ネタもとは【 Movable...

 Comments(15)

#1: Posted by Author Profile Page *yu @ June 1, 2008 [REPLY]
user-pic

さっそく使ってみました。
こっそりMTも 4.2rc1-jaにしてみましたよ~うぅ~ん
(なんて無謀な・・・という気もしますが)
デフォルトテンプレートの感じも変わってるような気がしますねぇグウグウ
再構築が早い~うぅ~ん
あ、EvalTemplate 2.2とLink Roller 2.6b1はそのまま使えるみたいです。

今まで地味~にひとつずつカテゴリー指定のMTEntriesタグで表示していたので、目からウロコ(笑)でした!
またCSSでデザインを何とかします。そのうち・・・チュ!

#2: Posted by Author Profile Page bzbell @ June 1, 2008 [REPLY]
user-pic

>>1 *yu さん

こんにちわ^^

> こっそりMTも 4.2rc1-jaにしてみましたよ~

さっそく入れてみたんですね。
でも RC 版だから大きなトラブルはないと思うのでいいかもですね。
わたしも RS2 あたりがでるようでしたら入れてみよっかなぁワクワク

> あ、EvalTemplate 2.2とLink Roller 2.6b1はそのまま使えるみたいです。

情報ありがとうございます。
EvalTemplate はとっても貴重なので使えないと困ること多々なんですよね。

> 今まで地味~にひとつずつカテゴリー指定のMTEntriesタグで表示していたので、目からウロコ(笑)でした!

何だぁ、言って頂ければよかったのにぃにこっ!
小技っていうカテゴリ作ったので、このカテゴリではデフォルトタグを使ったいろんな小技をご紹介してくつもりです。

どうぞよしなにもじもじ

#3: Posted by Author Profile Page Aik☆ @ June 2, 2008 [REPLY]
user-pic

>>2 bzbell さん
今晩は~(^^)V。ウチはサイドバーを折りたたんでしまったので、最新の記事が表示されなくなって「さて、どうしようんな?」と思っていたのですが、痒いところに手が届きそうなカスタマイズですね!。

これって catentries.pl と組み合わせたら、特定のカテゴリは記事を表示しないとか、特定のカテゴリはリストに入れない。ってコトも出来そうですね・・・ってやってみないと分からないトコがいい加減ですが^_^;。

#4: Posted by Author Profile Page bzbell @ June 2, 2008 [REPLY]
user-pic

>>3 Aik☆ さん

こんばんわ^^

> 特定のカテゴリはリストに入れない。ってコトも出来そうですね

うん。できますよ。
たとえば以下のようなかんじ。

<MTTopLevelCategories>
<MTSubCatIsFirst><ul class="catlist"></MTSubCatIsFirst>
★  <mt:SetVarBlock name="catname"><$MTCategoryLabel decode_html="1" remove_html="1"$></mt:SetVarBlock>
★  <mt:Unless name="catname" like="除外カテゴリ① | 除外カテゴリ②">
<mt:IfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><$mt:GetVar name="catname"></a> <span class="catcnt">[<$MTCategoryCount$>]</span>
<ul class="entlist">
<MTEntries lastn="3">
<li><a href="<$MTEntryPermalink$>" title="<$MTEntryExcerpt convert_breaks="1" words="20"$>"><$MTEntryTitle$></a> <span class="entdate"><$MTEntryDate format="%Y/%m/%d"$></span></li>
</MTEntries>
</ul>
<mt:Else>
<li><$mt:GetVar name="catname"> <span class="catcnt">[<$MTCategoryCount$>]</span>
</mt:IfNonZero>
<$MTSubCatsRecurse max_depth="5"$>
</li>
★  </mt:Unless>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTTopLevelCategories>

上記ソースの★マークを追加して、除外したいカテゴリ名称を入力すれば OK です。気をつけることは★マークの MTUnless を入れる場所ですかね。
場所によっては正しいマークアップで出力されなくなっちゃいますあせあせ

また、除外カテゴリを複数指定することもできます。
その場合には以下のように「 | 」で区切ります。

like="除外カテゴリ① | 除外カテゴリ② | 除外カテゴリ③"
#5: Posted by Author Profile Page Aik☆ @ June 2, 2008 [REPLY]
user-pic

>>4 bzbell さん
アドバイス有難うございます。
昨晩オフラインのパソコンのMTで色々試していました。
上のソース、インデントが全角スペースになってます~^_^;。

除外カテゴリーですが、”親”だけ指定した時動作するという解釈でよいですか?。試しに親と子供を混ぜたら、両方とも表示されてしまったのですが、親だけだと非表示になりスッキリ(^^)V。でも指定の時考えたら子のカテゴリーにスペースがあったんです。もしかしいMTの複数指定もスペースが含まれる時「' ' 」で囲うのがお約束でしょうか?。

あと一点。MTSubCatsRecurse ですが「5」という数値は何を意味しているのでしょうか?。「0」か「1」の説明はありましたが、5階層まで表示。という隠しオプション^_^;でしょうか?。

#6: Posted by Author Profile Page bzbell @ June 2, 2008 [REPLY]
user-pic

>>5 Aik☆ さん

> 試しに親と子供を混ぜたら、両方とも表示されてしまったのですが、親だけだと非表示になりスッキリ(^^)V

確かに親と子をいっしょに指定すると無視されちゃいますね。
だとすると MTUnless の場所、または MTSubCatsRecurse の場所が悪いのかもしれませんね。
もしくは仕様あせあせかなぁ。

> でも指定の時考えたら子のカテゴリーにスペースがあったんです。

カテゴリ名称にスペースが含まれるとマッチしないようですね。
「'」シングルクォートしてもダメでした。
スペースが入ってしまうとマッチできないようです。

MTSubCatsRecurse の max_depth はカテゴリの階層を意味します。
要するに親から子、孫…と辿ったときどこまで表示するかという指定になります。たとえば、max_depth=3 とした場合、3 階層まで有効(表示)となります。

カテゴリ1             ○
|
+-- カテゴリ1-1         ○
+-- カテゴリ1-1-1      ○
+-- カテゴリ1-1-1-1   ×
+-- カテゴリ1-1-1-1 ×
#7: Posted by Author Profile Page Aik☆ @ June 2, 2008 [REPLY]
user-pic

>>6 bzbell さん
アドバイス有難うございます。
もう一点質問です。昨日書いていただいたソースと微妙に違いますよね。
お知らせメールが届いたので、変更があったのは確認したのですが、
「$mt:GetVar 」はMT4.1からのタグですよね。
ウチは4.01なので最初に書いていただいたソースのままで動かしてますが、
よっく見たら下の方にも最初から「$mt:GetVar name="catname"」がありますね。
気がつかないでそのままのソースで貼り付けてしまいましたが、MT4.1で増えた
タグなのに MT4.01で再構築でエラーにならないのも不思議です。

#8: Posted by Author Profile Page bzbell @ June 2, 2008 [REPLY]
user-pic

>>7 Aik☆ さん

そっか、Aik☆さんは MT4.0 でしたね。
そすると MT4.1 以前の場合にはカテゴリの除外はプラグインに頼るしかないですねあせあせ
すいません、最近すっかり MT4.1 に慣れてしまってて当然のように説明してしまいましたのほほん

#9: Posted by Author Profile Page Aik☆ @ June 2, 2008 [REPLY]
user-pic

>>8 bzbell さん
MT4.01でも”親”カテゴリーだけなら消せますから大丈夫です。
catentries.pl を使って、全てのカテゴリーは表示したまま、”特定のカテゴリー記事だけ表示しない”って出来ないかな?と思ってましたが、表示される上、記事の取得が新しい記事を取得しないので、面倒になって止めちゃいました^_^;。

でも、サイドメニューを折りたたんでいる方にはカテゴリーと記事が一緒に表示できるだけでも便利だと思います。有難うございました~(^^)。

ちなみにブログはMT4.01ですが、パソには InstaMT を入れてありますので、オフラインで MT4.1を試してます。ネットで色々やるより便利なんですがログがインポート出来なかったりして??の部分が多いのですが、プラグインとかガシガシ試すには飛んでも怖くないので結構便利です。

bzbellさんは使われていませんか?。

#10: Posted by Author Profile Page bzbell @ June 2, 2008 [REPLY]
user-pic

>>9 Aik☆ さん

> サイドメニューを折りたたんでいる方にはカテゴリーと記事が一緒に表示できるだけでも便利だと思います。

あっホントだ。できてますね。よかったですぅワクワク

> ちなみにブログはMT4.01ですが、パソには InstaMT を入れてありますので、オフラインで MT4.1を試してます。

XAMPP のことですか!?
わたしが使ってるパソコンは家族で共有な上に、ディスク容量がないからやたらに入れるなっ!! と言われてまして、まだ試したことないんですよねぇあせあせ

ローカルで使えるようになれば、テンプレート作成も楽チンなのになぁ・・・と思う今日この頃ですグウグウ

#11: Posted by Author Profile Page Aik☆ @ June 3, 2008 [REPLY]
user-pic

>>10 bzbell さん
InstaMTはローカルパソコンやUSBメモリーにインストールして使えるMTパック?。
以前私もCGIのテストに自宅パソにアクセスできるようにしてましたが、その時の面倒さを考えると楽ちんパックです~。

データベースもMTもインストールされますので、ネットでサーバー借りて始める前にMTを試してみたい方にお勧めかも知れないですね。

http://www.movabletype.jp/blog/instamt.html

外付けHD、IOのならいま1万で320ギガが買えます、作業する時だけそれ付けちゃうのも手ですよ~。

#12: Posted by Author Profile Page bzbell @ June 3, 2008 [REPLY]
user-pic

>>11 Aik☆ さん

> 外付けHD、IOのならいま1万で320ギガが買えます、作業する時だけそれ付けちゃうのも手ですよ~。

えっキャハハ!?
そんなに安いんですか!?
買っちゃおうかなぁあせあせ
ちなみに IO ってなんですかあせあせ

#13: Posted by Author Profile Page Aik☆ @ June 3, 2008 [REPLY]
user-pic

>>12 bzbell さん
IOデータです(^^)V。いま8台外付けがありますが全部IO製品です。
(勿論他のメーカー製品も色々使いましたが、トラブルが無かったのはIOだけなので)

I-O DATA機器 USB 2.0/1.1対応 外付型ハードディスク 320GB HDCN-U320
http://utun.jp/gVM/

↑パソコンと連動式で電源OFFされるタイプですが、昔のようにオートとマニュアルの切り替えが無いのでUSBのハブに付けると電源のON/OFFが上手く動かない可能性がありますが、ウチにも1台ありますが、パソコンにあるISBポートに接続した場合、その不都合は発生してません。ただ、最近流行の電動ファンレスタイプなので、お仕事で24時間使ったり、稼働率(読み書き)が高いポジションに使われる場合、熱を発生しますので扇風機を充てるなど対策をしています。でもお勧め。
(ちなみにマッハUSBというUSB2.0を高速化するツール対応ですが、私は怖いので使ってません^_^;)

I-O DATA RAID 0・1対応 USB 2.0/1.1 ハードディスク 1.0TB RHD2-U1.0T
http://utun.jp/gVC/

私がメインで使っているHDです。ハードRAID対応なので、ミラーリング設定にすると、片方のHDに保存するだけで、もう一つのHDに自動的にバックアップが作られ、もしもの時に一番安全。ソフトウェアでデータのバックアップをされているのでしたら、絶対コレ、お勧めです。また電動ファンが付いていますが音は殆ど無く、従来のファンレスタイプが熱々になるのに比べ、24時間回しても本体はひんやりしています。

上記2台とも、もっと大きい容量がありますが、動画(HDDレコーダーに繋げる)を保存しない限り、本当は250ギガで充分です。というのも上のサイズでも、厳密なチェックディスクをかけると2時間掛かりますし、デフラグも同様にディスクサイズが大きければ相当時間がかかります。あと、HDは消耗品ですから、1~2年ハードに使うと壊れる確率が高くなり、当然容量が大きければ被害甚大ですので、本当に大事なデータを保存に使うのでしたら RHD2-U1.0Tが一番です。価格的にも500ギガを2台購入するより安いですし、ミラーリングHDとしては信頼出来ますので本当はコッチがお勧めです。

あと余談ですが、パソコンが何台かある場合は、LAN対応のハードディスクを購入するより、次の製品が結構お勧め。

http://www.iodata.jp/prod/storage/hdd/2004/usl-5p/index.htm

ウチでも使ってます。USBに比べると転送速度が落ちますが、使わなくなったUSB・HDを5台まで接続出来ますので、LANHDを5台付けるより10万くらい安くなる計算。全面のポートにデジカメとか繋ぐと自動バックアップもしますので、実働価格に比べたらお役立ち製品です。

って、こういう雑談はフォーラムネタですね^_^;。

#14: Posted by Author Profile Page bzbell @ June 3, 2008 [REPLY]
user-pic

>>13 Aik☆ さん

こんばんわ^^

Aik☆ さんってパソコンのこと詳しいですよねぇあせあせ
何でそんなにパソコン持ってるんですか!?
もしかして Aik☆ さんのお仕事ってエンジニアさんキャハハ!?

わたしこれ(http://utun.jp/gVM/)買いますサングラス
実は使ってるパソコンの中から カラカラ♪ と音がしてるのですっごく気になってて、やばそうなので大事なファイルはサーバに置いてるんですあせあせ

先日会社の人から、知識が偏ってるって言われましたイヤイヤ
基本的なパソコンのことは知らないくせに、プログラミングやブログのことは知ってるのは間違ってるですってグウグウ

知ってるって言ったって、趣味の範囲なだけなのに・・・。

#15: Posted by Author Profile Page Aik☆ @ June 4, 2008 [REPLY]
user-pic

>>14 bzbell さん
パソコン歴が単に長いだけですよ~。車のCPUのリミッターをカットしたり燃調合わせるのは得意ですが、パソコンのほうはせいぜいBATファイルが書ける程度です。bzbell さんのようにテンプレートとか作りたいですが、ゼロから作るって大変ですよね。既にあるモノをアレンジする程度なら頑張ればなんとか出来そうですけど、先日”MTのプラグインの作り方”という記事を見つけて読みましたが、基礎が分かってないので応用以前の問題でした^_^;。

異音ってノートパソコンで”カラカラ”なら部品が外れている可能性がありますが、ディスクトップですよね?。

”カチカチ”とか”カタカタ”って音じゃないですか?。基本CPU周りはROM基盤ですから故障しても音は出ないと思います。出るのはハードディスクのドライブ周りかも知れませんので、もしディスクにアクセスした時に音がするようでしたら、早めに対処しないとWindowsが起動しなくなる日も近いですよ~。HDの機械的故障の場合はチェックディスクでは分かりませんから。

他には電動ファンの可能性もありますね。ファンは本体用と、グラフィックボードが高いヤツだとソレにも付いています。一度ケースを開けて、動かしながら何処から音が聞こえるか調べるのが一番ですが…。

ちなみに最近はウィンドウズのバックアップも簡単ですから、もし修理に出されるなら、ハード的な故障の場合、ウィンドウズの中身は関係ありませんから一旦バックアップしておき、メーカー側でリカバーなどされた時のためにバックアップを取っておくことをお勧めします。

ご参考までに>http://utun.jp/gV=

ま、故障を機にリカバーしてレジストリとか新品の時用隊にしたほうがパソは速くなりますが、市販ソフトの再インストールや設定に掛かる時間もバカにならないですものね。

ちなみに、MT関係の資料とかテンプレートのバックアップだけでしたら、USBメモリーに入れて保存しておくのも手です。
WEB用のデータでしたら4ギガもあればバックアップしておけますよね。USBメモリは最近滅茶苦茶安いですし、HDと違ってポケットに入りますから会社でもすぐ確認できちゃいますよ(^^)。

 Post a Comment

 

コメント用フィード