サブカテゴリーリストの折りたたみ+ツリー化 for Movable Type
Category:[カテゴリー, ツリー化, 折りたたみ]
Tag:[Customize, MovableType, SubCategory, Tree]
以前、Movable Type のツリー化記事で「JavaScript 不要なサイドメニューのツリー化 for Movable Type」を紹介しましたが、当サイトで定番カスタマイズとなっている「サブカテゴリーリストの折りたたみ」と併用する場合の設定方法についてご質問を頂きましたので、本エントリーにて改めてご紹介致します。
このエントリーのカスタマイズを行うことで、スクリーンショットのようにサブカテゴリーリストを折りたたみ+ツリー化することができます。
なお、JavaScript が不要なのはツリー化のみで、折りたたみ動作には必要です。
1.スクリプトのダウンロード
下記のリンクをクリックし、リンク先のページにある menufolder.js のリンクをクリックしてダウンロードしてください。
2.menufolder.js の設定変更
ダウンロードした menufolder.js を任意のエディタで開き、下記の該当部分を青色の内容であることを確認(または修正)してください。
// カテゴリーリスト数計算方法
// サブカテゴリーのカテゴリー数を適正に計数する
// サブカテゴリーに対応:true
// 従来のカテゴリーに対応:false
var subCategoryCount = true;
:
// サブカテゴリーフラグ
// サブカテゴリーの折りたたみを有効にする(テンプレート要設定)
// 有効にする:true
// 無効にする:false
var subCategory = true;
// サブカテゴリー用折りたたみマーク
var openMarkForSubCategories = '▼';
var closeMarkForSubCategories = '▲';
// サブカテゴリーのタイトルとマークのスペース
var offsetForTitleAndMarkOfSubcategory = 1;
設定内容の詳細は下記の通りです。
subCategoryCount
- 名称:カテゴリーリスト数計算方法
- 用途:カテゴリーリスト数計算方法を li タグ(サブカテゴリー表示)で計数するか、a タグ(従来の一括表示)で計数するかを指定します。
- 設定値: true:li タグで計数/false:a タグで計数
subCategory
- 名称:サブカテゴリーの折りたたみ有効フラグ
- 用途:サブカテゴリーの折りたたみの有効/無効を設定します。ここでは有効にします。
- 設定値: true:有効/false:無効
openMarkForSubCategories/closeMarkForSubCategories
- 名称:サブカテゴリーの折りたたみマーク
- 用途:サブカテゴリー名横に表示する折りたたみ用リンクのマーク
- 設定値:任意の文字(設定したマークを''で括るように)
offsetForTitleAndMarkOfSubcategory
- サブカテゴリーのタイトルとマークのスペース
- 用途:サブカテゴリーのタイトルとマークの間に挿入する半角空白文字数を指定
- 設定値:0以上
3.スクリプトのアップロード
menufolder.js の修正が終わったら保存し、メインページと同じディレクトリにアップロードしてください。
4.テンプレートに script 要素追加
サブカテゴリーリストの折りたたみを利用する各テンプレートの </head> の直前に下記のタグを追加してください。charset 属性は menufolder.js の文字コードを指定してください(分からなければとりあえずサンプルのまま貼り付けてください)。
<script type="text/javascript" src="<$MTBlogURL$>menufolder.js" charset="utf-8"></script>
5.テンプレートにサブカテゴリーリスト表示用タグを追加
折りたたみ+ツリー化用のサブカテゴリーリスト表示用タグ(下記)をテンプレートの任意の位置に設定します。
<MTSubCategories>
<MTSubCatIsFirst><MTHasParentCategory><div id="subcategories<MTParentCategory><$MTCategoryID$></MTParentCategory>list"></MTHasParentCategory><ul class="tree"></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li class="tree<MTSubCatIsLast>_end</MTSubCatIsLast>"><MTHasSubCategories><div class="subcategories" id="subcategories<$MTCategoryID$>name"></MTHasSubCategories><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryID$>"><MTCategoryLabel></a> [<$MTCategoryCount$>]<MTHasSubCategories></div></MTHasSubCategories>
<MTElse>
<li class="tree<MTSubCatIsLast>_end</MTSubCatIsLast>"><MTHasSubCategories><div class="subcategories" id="subcategories<$MTCategoryID$>name"></MTHasSubCategories><MTCategoryLabel><MTHasSubCategories></div></MTHasSubCategories>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse max_depth="3">
</li>
<MTSubCatIsLast></ul><MTHasParentCategory></div></MTHasParentCategory></MTSubCatIsLast>
</MTSubCategories>
<script type="text/javascript">
<!--
<MTTopLevelCategories>
<MTHasSubCategories>FoldNavigation('subcategories<$MTCategoryID$>','initState',false);</MTHasSubCategories><MTHasSubCategories></MTHasSubCategories>
<MTSubCatsRecurse>
</MTTopLevelCategories>
//-->
</script>
青色は「JavaScript 不要なサイドメニューのツリー化 for Movable Type」のサブカテゴリーリストとの差分を参考までに示しています。
赤色部分は下記を参照して適宜変更してください。
initState
- 名称:初期状態
- 用途:ページを最初に表示した時の折りたたみ状態を指定します
- 設定値: on:開いた状態/off:閉じた状態
またカテゴリーアーカイブページで、どのページでも同じカテゴリーリストを表示したい場合は、上記サブカテゴリーリストの先頭および末尾にある MTSubCategories タグを MTTopLevelCategories タグに変更してください。
6.CSS追加
下記を styles-site.css に追加してください。
ul.tree {
margin: 0 0 0 5px;
padding: 0;
font-size: 9px;
list-style: none;
}
ul.tree ul {
margin: 0;
padding: 0;
}
ul.tree li {
margin: 0;
padding: 0 0 0 13px;
background: url(tree_lst.gif) no-repeat 2px 0;
list-style: none;
}
ul.tree li.tree_end {
background: url(tree_end.gif) no-repeat 2px 0;
list-style: none;
}
.subcategories a.foldmark {
font-size:9px; /* マークのフォントサイズ */
text-decoration: none; /* マークの文字装飾(装飾なし) */
}
7.ツリー画像のダウンロード
下記のファイルをダウンロードしてください。これはツリーを表示するための画像で、実線・点線の2種類を用意しています。それぞれ2つの画像がありますのでご注意ください。
保存方法は、(IEの場合)リンクをクリックして一旦画像を表示し、その後に「ファイル」→「名前をつけて保存」で保存するか、リンクを右クリックして「対象をファイルに保存」を選択します。
ツリー画像のファイルは6項の CSS(青色部分)で読み込まれますので、ファイル名は一致させてください。つまり、tree_lst_solid.gifをダウンロードする時(またはダウンロード後)、ファイル名は tree_lst.gif に変更してください。
8.画像のアップロード
ダウンロードした画像をメインページと同じディレクトリにアップロードしてください。
以上です。
これでサブカテゴリーリストに折りたたみマークとツリーが表示されればOKです。
- カテゴリーの階層別にデザインを切り替える for Movable Type 4
- カテゴリーリストの中に月別カテゴリーリストを表示する
- サブカテゴリーリストを定義型リストでマークアップする
- カテゴリーリストにカスタムフィールドの画像を表示する
- ブログ記事に同一カテゴリーのブログ記事の前後リンクを表示する
- カテゴリーアーカイブのサブカテゴリーリストに、親カテゴリーとその子カテゴリーを表示する
- ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版・改)
- Movable Type 4 でカテゴリー別にデザインを切り替える方法(その3)
- Movable Type 4 でカテゴリー別にデザインを切り替える方法(その2)
- Movable Type 4 でカテゴリー別にデザインを切り替える方法(その1)
- Movable Type 4 のカテゴリーアーカイブで全てのブログ記事を表示する
- dtree のサブカテゴリーリストにブログ記事タイトルを表示する for Movable Type
- Movable Type 4.1/MTOS のネイティブタグで dTree を実装する
- アーカイブページのリストの表示内容が異なる理由
- Movable Type 3 からのアップグレードによる「月別カテゴリーアーカイブ」の追加方法
- ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版)
- カテゴリー・アーカイブのカテゴリーリストで該当カテゴリーのエントリーのみを表示する
- カテゴリーリストにエントリータイトルを表示する
- dTree によるサブカテゴリーリスト for Movable Type
- サブカテゴリーリストのエクスプローラ風折りたたみ
ありがとう御座います。
早速、適用して無事折りたたみ出来るようになりました。
>thomasさん
こんにちは。
ご連絡ありがとうございました。
うまくできたようで良かったです。
ではでは!
本記事を参考にさせていただき、サブカテゴリーリストの折りたたみ+ツリー化に成功しました。
どうもありがとうございます。
一点お尋ねしたいのですが、カテゴリー名のところにマウスポインターを移動するとツールチップ(?)で表示される数字は何を意味しているのでしょうか?
カテゴリー名の右側にカッコ付きで表示されるエントリー数とは一致していないので、疑問に思っております。
もしよろしかったらご回答いただけると幸いです。
>edenさん
こんにちは。
ご質問の件ですが、表示される数字は「カテゴリーID」です。
ツールチップとして表示させる目的よりも、カテゴリーリストに同一カテゴリー名が存在する時に、title 属性(ツールチップ)の内容が異なっていれば valid な (X)HTML となるので、おそらくその目的で与えてたものと記憶しています。
title 属性の内容を変更すれば数字以外の表示にすることができますので、お試しください。
それではよろしくお願い致します。
>yujiroさん
詳細な回答、ありがとうございました。
なるほどカテゴリーIDなんですね。
疑問が晴れてすっきりしました。
お忙しいところ、お手数をおかけして申し訳ございませんでした。
今後ともどうぞよろしくお願いいたします。
>edenさん
こんにちは。
ご連絡ありがとうございました。
ではでは!
yujiroさま。こんにちわ。いつもお世話になっております。
また初歩的な質問で申し訳ないのですが・・・
どうしてもうまくいかないのでご指導を宜しくお願い致します。
ツリー化する事が出来たのですが、ツリーを表示するための画像が
文字に乗ってしまうのにはスタイルシートの何処を変更したら
良いのでしょうか?
お忙しいとは思いますが、宜しくお願い致します。
>アプルさん
こんにちは。
ご質問の件ですが、下記の赤色部分を修正してください。
ul.tree li {
margin: 0;
padding: 0 0 0 13px;
:
20px 位が丁度いいようです。
それではよろしくお願い致します。
yujiroさま。こんにちわ。いつもお世話になっております。
ありがとうございました♪yujiroさまの言う通りに
20pxにしたら一発でした。
また宜しくお願い致します。
yujiro様、はじめまして。
いつも拝見させていただいております。
サイドバーに画像を挿入したいのですが
その場合、どうすれば良いのでしょうか?
もしくは小粋空間さんのどのページを参考にすれば良いのでしょうか?
書籍のほうを参考にしたんですが
画像については書かれてなかったので
こちらに書かせていただきました。
>tanaさん
はじめまして。
ご質問の件ですが、画像を挿入するのは、5-4の手順4~手順6で可能だと思います
(P174のコーヒーカップがそうです)。
画像にリンクを設定しない場合は、手順4のa要素を削除して、dd要素とimg要素だけにしてください。また、width属性とheight属性は削除するか、画像のサイズにあわせて修正してください。
どの程度ご理解頂けているかわからないので、上記の説明でお分かりでなければ再度ご連絡ください。
それではよろしくお願い致します。
こんばんは。
お世話になります。
このカスタマイズを行いたいのですが、折りたたみの三角マーク(▼)が??になってしまいます。その??でも折りたためるのですが、どのようにすれば三角マークが表示されるのでしょうか?
以前にこのカスタマイズを行ったことがありますが、その時はノーミスで表示されました。今回はどうやってもうまくいきません。
申し訳ありませんが、手順を教えて頂けますか?
よろしくお願い致します。
>たけたけさん
こんばんは。
ご質問の件ですが、原因はブログの文字コードと、menufolder.js の文字コードが一致していないためです。
対処は、ヘッダにある
<script type="text/javascript" src="http://www.syumi-beya.com/two_wheels_plus/blog/menufolder.js"></script>
にcharset属性を付与して、
<script type="text/javascript" src="http://www.syumi-beya.com/two_wheels_plus/blog/menufolder.js" charset="shift_jis"></script>
に変更すれば直ります。
それではよろしくお願い致します。
こんばんは。
お忙しい中、ご返答頂きましてありがとうございました。ちゃんと表示されました。
文字コードをutf-8で記入しましたが表示されず、散々悩みまして助け舟をお願いしました。
こんな凡ミスで申し訳ありません。今更ながら、もう少し考えればと思っています。
ありがとうございました。またよろしくお願い致します。
>たけたけさん
こんばんは。
ご連絡ありがとうございました。
無事に表示されたようでよかったです。
ではでは!
こんばんは。
度々で申し訳ありません。カテゴリーリストで気になる所がありましたので、再度質問させて下さい。
カテゴリーリストにある項目(カテゴリー名)を選択すると、1ページの中にその選択したカテゴリーに属するエントリーが全て表示されると思っていたのですが(Ver.3.3では表示されていたと思いますが)、ブログの設定で入力した数のエントリーしか表示されません。(ちなみに私のブログはページ分割のカスタマイズはしていません。)
新たに公開テンプレート(カスタマイズ無し)で保存してみましたが、やはりカテゴリー内の全エントリーは表示されませんでした。
対策方法があるかと過去のコメントを頑張って目を通してみましたが、探しきれませんでした。
度々の質問で申し訳ありませんが、ご教授頂きたく、よろしくお願い致します。
>たけたけさん
こんにちは。
ご質問の件につきましては本日「Movable Type 4 のカテゴリーアーカイブで全てのブログ記事を表示する」
をエントリー致しましたので、参考になれば幸いです。
それではよろしくお願い致します。
こんばんは。
「Movable Type 4 のカテゴリーアーカイブで全てのブログ記事を表示する」のエントリーにコメントを書かせて頂きました。
はじめまして。
小粋空間のサイト、よく利用させて頂いております。
(本も購入してしまいました・・・)
色々と調べてきましたが、どうしてもサブカテゴリーのツリー化だけは出来ないので
質問させてください。
こちらの通りに、作業を行いましたが、何も変化がございません。
作業を行ったのは、以下となります。
どの点が異なるのか、お手すきの際にでもご返答いただけると助かります。
----------------------------------------------------------------------------
3.スクリプトのアップロード
メインページと同じディレクトリ、以下URLにUPしました。
http://figureskating.main.jp/blog/
4.テンプレートに script 要素追加
</head>のまえにいれました。
5.テンプレートにサブカテゴリーリスト表示用タグを追加
メインページの「index.html」に、MTの管理画面から入れました。
6.CSS追加
MTの管理画面から、スタイルシートの「styles.css:」に入れました。
8.画像のアップロード
メインページと同じディレクトリ、以下URLにUPしました。
http://figureskating.main.jp/blog/
----------------------------------------------------------------------------
恐らく、4.、5.あたりの作業が違うのかなと思いますが・・・。
大変お手数おかけ致しますが、アドバイスなど頂ければ幸いです。
よろしくお願いいたします。
>kaikaiさん
こんばんは。
ご返事遅くなり申し訳ありません。
拙著お買い上げくださりありがとうございます。
ご質問の件につきまして、現在dTreeを設定されているようですが、どちらで動作確認した方がよろしいでしょうか。ご連絡頂ければ幸いです。
それではよろしくお願い致します。
こんにちは!
kaikaiさんと同様に実装できなくて悩んでおります。
サイトはMT4.1でくんでおり、koikikukanのテンプレートを使わせてもらっています。テスト環境で実験していますので、ソース等は見ていただくことができなくてすみません。
4.テンプレートに script 要素追加
</head>のまえにいれました。
5.テンプレートにサブカテゴリーリスト表示用タグを追加
メインページの「index.html」に、MTの管理画面から入れました。
6.CSS追加
MTの管理画面から、スタイルシートの「styles.css:」に入れました。
4&5のテンプレートとおっしゃっているのは、
template_4_1_utf8_1_2_style
のテンプレートではどのファイルを指しているのでしょうか?
また、ファイルの変更はMTの管理ツールで行うものでしょうか?それとも、エディタで書き換えるのでしょうか?MT初心者でよくわかっていなくてすみません。
お教えいただければ幸いです。
K26
yujiro-san
3/31に質問した内容の中で下記を特にお教えいただければうれしいです。
--
4.テンプレートに script 要素追加
サブカテゴリーリストの折りたたみを利用する各テンプレートの の直前に下記のタグを追加してください。charset 属性は menufolder.js の文字コードを指定してください(分からなければとりあえずサンプルのまま貼り付けてください)。
--
MT4.1をインストールしているのですが、「サイドバー」テンプレートモジュールのソースには、タグが見当たらないのですが、yujiroさんのおっしゃっている「各テンプレート」とは具体的にどれなのでしょうか?
>K26さん
こんにちは。
ご返事遅くなり申し訳ありません。
とりあえず[22]のコメントのみ回答致しますと、この記事はMT3の時の内容で、MT3では各テンプレートに head 要素がありました。
MT4ではテンプレートモジュールの「ヘッダー」にしかありませんので、「各テンプレート」は「ヘッダー」に読み替えてください。
なお、このブログで2007年前半以前の記事は、すべてMT3向けの内容になっています。一部MT4向けに新しく記事を書き直していますが、すべての対応はできておりませんので、その際は投稿日を確認して、過去の記事であれば上記のように読み替えてください(MT4向けは記事タイトルまたは記事本文にその旨記しているつもりです)。
それではよろしくお願い致します。
Yujiro様
コメントありがとうございました。
出張が重なり、やっとサイトを見れています。
早速試してみます。

