サブカテ整理しようと思って・・・
←エントリーの入っていないサブカテを作ったら、リストのインデントがなんだかおかしくなってしまって・・・。どうも、何もエントリー入っていないサブカテは表に表示しないようにしてるので、リストスタイルタグの開け閉めの出力がおかしくなったようで、こんなんなっちゃいました。(苦笑)
←本来はこうあるべきで、見てのとおり非表示にしているサブカテの後がインデントされてしまってまつ。
こりゃー、ソースが悪いんだろうなぁということで、いつもお世話になってる小粋空間さんのところに確かサブカテに関するエントリーがあったのを思い出したので、並べてソースを確認してみました。案の定、間違っていたようなので、オリジナルとはコンテナタグが違いますが、ちょいちょいっと修正。で、オリジナルだと、サブカテゴリ内にエントリーが無い場合でも、サブカテゴリ名が表示されてしまっているので、<li>タグもちょいちょいといじって、サブカテゴリ内が空の場合、表示しないように修正しました。
以下、修正個所転記。
■変更前
<MTSubCategories>
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryDescription></a> [<$MTCategoryCount$>] <$MTSubCatsRecurse$></li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTIfNonZero>
</MTSubCategories>
■変更後(赤字が訂正個所、青字が非表示制御)
<MTSubCategories>
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryDescription></a> [<$MTCategoryCount$>]
<MTElse>
<li style="display:none;"><MTCategoryDescription>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse max_depth="3"></li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories>
【追記:18:19】
一つ大きな問題が・・・。この方法だと親カテが空でサブカテにエントリーが入っている場合、親カテから表示されないという。どうすっかなー・・・。(苦笑)
【追記:2004.12.14】
yujiro さんより、ナイスなコメントいただきまして、親カテが空でサブカテにエントリーがある場合にも表示されるようにできました。いつもすみませーん。^^
MTの条件タグ <MTHasSubCategories> を使用し条件分岐させると・・・。
以下、転記しときます。
<MTElse>~</MTElse> の部分を
:
<MTElse>
<MTHasSubCategories>
<li><MTCategoryDescription>
</MTHasSubCategories>
<MTHasNoSubCategories>
<li style="display:none;"><MTCategoryDescription>
</MTHasNoSubCategories>
</MTElse>
:
へ変更。
ただーし、注意点が一点。
空の孫カテを作ると、空の孫カテは表示されないのですが、その上位の子カテは空であっても表示されてしまいます。単に条件分岐だけの問題なので、恐らく、同じように条件分岐させれが良いのでしょうが、最近子供を作ったばかりで、当分孫が出来る予定は無いのでこのまま放置。(笑)
エントリーを保存して再構築した後、カテゴリー設定のプルダウンメニューの下に現れる”複数のカテゴリーを設定する”から、主カテゴリーを設定するだけで表示されますよ。
ただ、構造が変になってしまうので、後々、何かトラブルの原因になりそうな悪寒がする場合は、手間でもプルダウンメニューを主カテゴリーに設定してなおして、”複数のカテゴリーを設定する”から、副カテゴリーを設定したほうがいいように思えます。
> naganagaさん
おはようございます。^^
うーん、残念ながら主カテゴリを設定せずにサブカテだけ設定したかったりするんですよねー。
例えば、『ヴァージョン別』を親に、その下に『MT 3.01』とか『MT 3.11』とかサブカテを作るじゃないですか。んで、それぞれにエントリーポストして、親カテ『ヴァージョン別』は設定せず、サブカテだけ設定したいと・・・。そうすると、親カテである『ヴァージョン別』内にはエントリーが設定されていないので、空のカテゴリを非表示制御してると、その下のサブカテにエントリーが入っていても表示されないという罠。なんです。(苦笑)
こんにちはー。
記事参照どうもです。
<MTElse>~</MTElse> の部分を
:
<MTElse>
<MTHasSubCategories>
<li><MTCategoryDescription>
</MTHasSubCategories>
<MTHasNoSubCategories>
<li style=”display:none;”><MTCategoryDescription>
</MTHasNoSubCategories>
</MTElse>
:
でいかがでしょうか(サブカテゴリーが存在する空の親カテゴリーは表示するというロジックです)。
が、親子とも空の場合は表示されてしまうかも知れないのと孫の有無まではチェックできませんね…。