2004年11月17日

サブカテゴリでもプルダウン

メイン > PC・Web関連 Movable Type メモ

Movable Type のバージョンアップでサブカテゴリが使えるようになりました。ただいま、カテゴリの整理中。自分的にあまり面白くない作業なので、あんまり進んでませんが・・・。しばらく、カテゴリ入れ替えのごたごたが続くと思います。

MT 3.1 では、<MTCategories>で階層構造を無視した今までのような形のリストと、<MTSubCategories>で階層構造を配慮したリストが作れます。サブカテゴリを活用したいと思っているので、当然、<MTSubCategories>を使いたいところです。

<MTSubCategories>ではエントリー数0のカテゴリも表示されます。ここで、問題発生です。単純にリンクを付けるタグを使うと、エントリのないカテゴリ(=アーカイブページのないカテゴリ)までリンクが作られ、クリックすると「ページが見つかりません」のエラーになります。それはちょっと・・・、なので、エントリー数が0の場合はリンクしないプルダウンメニューを作りました。詳しくは追記にて。

まずは、もともと参考にしていたコードです。旧MTのblogで参考にしていた2xUP「2xUP UTF-8とMac IEとプルダウン」は、今見るとリンク切れになっています。もう、前に使ってたテンプレートなんて残してないよ。がくっ。

が、さがしてみると、しっかり残してくれている方がいました!

hwp blog: プルダウンメニュー

ググって検索した。
2xUPってところが引っかかったんだけど、
もうすでにリンクが切れてて、なぜがそのページだけ生きてた。

ありがとうございます。今度は、わたしもしっかり残しておきます。

javascript 部分

<script language="javascript" type="text/javascript"> 
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
</script>

プルダウンメニュー(月別・カテゴリ別)

<div class="side" lang="ja"> 
<!--Monthly -->
<form name="pulldown_monthlyarchives">
<select name="menu" onChange="MM_jumpMenu('parent',this,0)">
<option value="自サイトのアドレス" selected>【月別ログ】 </option> 
<MTArchiveList archive_type="Monthly"> 
<option value="<$MTArchiveLink$>">
・<$MTArchiveTitle$></option></MTArchiveList> 
</select> 
</form>
<!--Category -->
<form name="pulldown_category">
<select name="menu" onChange="MM_jumpMenu('parent',this,0)">
<option value="自サイトのアドレス"selected>【カテゴリー別ログ】 </option>
<MTCategories show_empty="1">
<option value="<$MTCategoryArchiveLink$>">
・<$MTCategoryLabel$>[<$MTCategoryCount$>]</option>
</MTCategories>
</select>
</form>
<!--Archives.html Link -->
<form name="pulldown_all">
<select name="menu"onChange="MM_jumpMenu('parent',this,0)">
<option value="archives.html"selected>【すべての記録】 </option>
<option value="archives.html">すべての記録</option>
</select>
</form>
</div>

スタイルシート

form { margin:0px; } 
select {
width:100%;
font
}

上記で、月別アーカイブと、普通のカテゴリ別アーカイブができます。ここのサイトでは下記のように、カテゴリ別アーカイブのプルダウンメニューにべつの関数を用意。階層構造に配慮したタグを使いつつ、エントリー数0のアーカイブにはリンクしないようにしました。

javascript部分

function CategoryMenu(selObj){
var cat_url = new Array();
var cat_count= new Array();
<MTCategories show_empty="1">
cat_url[<$MTCategoryID$>]= "<$MTCategoryArchiveLink$>";
cat_count[<$MTCategoryID$>]= "<$MTCategoryCount$>";
</MTCategories>
var id= selObj.options[selObj.selectedIndex].value;
selObj.selectedIndex = 0;
if (cat_count[id] != 0) window.location=cat_url[id];
}

プルダウンメニュー(カテゴリ別)

<form name="pulldown_category">
<select name="menu" onChange="CategoryMenu(this)">
<option value="<$MTBlogURL$>"selected>【カテゴリー別アーカイブ】 </option>
<MTSubCategories>
<option value="<$MTCategoryID$>">
<MTHasNoParentCategory>・</MTHasNoParentCategory><MTHasParentCategory>&nbsp;&nbsp;-&nbsp;</MTHasParentCategory><$MTCategoryLabel$>[<$MTCategoryCount$>]</option>
<MTSubCatsRecurse>
</MTSubCategories>
</select>
</form>

ヘルプではこれ以上の理解ができなかったのですが、実はもっとうまいタグの使い方とか、そうじゃなくても期待通りにリンクを作ってくれるプラグインとかありそうな気がします。今のところ、検索でもうまくめぐりあっていませんが、いい方法があれば書き換えますので、ご存じの方は教えてくださーい!

11/18:追加のjavascript不要な行があったので削除しました(もとの9行目)。

Trackback on "サブカテゴリでもプルダウン"

以下6件のトラックバックはこのページのエントリー"サブカテゴリでもプルダウン"を参照しています。

このエントリーのトラックバックURL: 

» サブカテゴリ対応のプルダウンメニュー

  • 2005年01月08日 21:28
  • from よんだりくわんだり

いろいろ探してもなかなか見つからなかった、 サブカテゴリ対応のプルダウンメニュー、 やっと見つかりました。 Notebook :: Hibi no Note さ... [続きを読む]

» サブカテゴリとバージョンアップ。

  • 2005年02月11日 17:11
  • from 幻想のさ・く・ら

昨日、他の方のサイトいじりを見ていたら、何となく自分もイジりたくなったので、少し... [続きを読む]

» サイドメニューのカテゴリーをプルダウンに

  • 2005年03月13日 15:56
  • from 犬といっしょ。(旧:初心者的 Dog'n Weblog)

サイドメニューのカテゴリーやらリンクやらが増えてきたので、(また増やそうと思って... [続きを読む]

» カテゴリーと、アーカイブをプルダウンに!

  • 2005年04月09日 00:50
  • from Subaring Blog

日々のノート さんへトラックバックです。 サブカテゴリでもプルダウン 憧れだった... [続きを読む]

» カテゴリーメニューのプルダウン化( ゚∀゚)彡

  • 2005年10月01日 22:34
  • from HAPPY Manager Blog

Movable Typeのカスタマイズで検索していたら、 カテゴリーメニューがプ... [続きを読む]

» カテゴリーメニューのプルダウン化( ゚∀゚)彡

  • 2005年10月19日 07:19
  • from HAPPY Manager Blog

Movable Typeのカスタマイズで検索していたら、 カテゴリーメニューがプ... [続きを読む]

Comment on "サブカテゴリでもプルダウン"

"サブカテゴリでもプルダウン"へのコメントはまだありません。

Post a Comment

コメントする
(HTMLタグは使用できません)
ブラウザに投稿者情報を登録しますか?(Cookieを使用します。次回書き込み時に便利です。)
  •  
  •