ブログって順繰りに見てく分にはいいんだけど、
どんなコンテンツがあるのかパット見わからないのが、
前々から気になってた。
ラベルとかタグとかはあるんだけど、カテゴリがでかすぎて探すのがだるい。
ということで、ラベルでサブカテゴリを使えるようにカスタマイズする。
仕様
- ラベルを階層を「 | 」(半角|)の区切りで登録すると、階層化されて表示されるようにする。例)aaa|bbb|ccc
- 階層で同じ名前は使わない。aaa,bbb|aaaみたいのはだめ。(表示がおかしくなる)
下のラベルの欄を見るとわかるけど、サブカテゴリもラベルとして追加してる。
aaa,aaa|bbb,aaa|bbb|cccという感じ。
使い方
jQueryを使ってるので、bloggerでjQueryを使えるようにするを参考に、インクルードしとく。
下のコードよりも先に読み込まれるように差し込むこと。
Bloggerのカスタマイズ→ガジェットの追加→HTML/Javascript
に↓のコードを貼り付ける。
- <style type="text/css"><!--
- .list-label-widget-content ul {
- margin-bottom:0;
- }
- .list-label-widget-content ul li{
- cursor:pointer;
- }
- --></style>
- <script type="text/javascript"><!--
- jQuery.noConflict()(function($){
- var classname = {};
- var labelcount = 0;
- $(".list-label-widget-content li").each(function(){
- var labels = $(this).find(":first").text().split("|");
- var parentul = $(".list-label-widget-content > ul");
- for (var i = 0;i < labels.length;i++){
- if (classname[labels[i]] == null){
- classname[labels[i]] = "list_group_"+labelcount;
- labelcount++;
- }
- if ( i < labels.length-1){
- if ($("."+classname[labels[i]]).length == 0){
- parentul.append("<li class='"+classname[labels[i]]+"'></li>")
- .find("li:last")
- .append("<a>"+labels[i]+"</a>")
- .append('<ul></ul>');
- }else if($("."+classname[labels[i]]+">ul").length == 0 ){
- $("."+classname[labels[i]]).append('<ul></ul>');
- }
- parentul = $("."+classname[labels[i]]+" > ul");
- }else{
- if ($("."+classname[labels[i]]).length == 0){
- parentul.append($(this).clone())
- .find("li:last")
- .addClass(classname[labels[i]])
- .find(":contains("+labels[i]+")")
- .text(labels[i]);
- }else{
- $("."+classname[labels[i]]+">a")
- .text(labels[i])
- .attr("href",$(this).find(">a").attr("href"))
- .after($(this).find(">span").clone());
- }
- $(this).remove();
- }
- }
- })
- $(".list-label-widget-content li").click(function(){
- $(this).children("ul").toggle();
- return false;
- });
- $(".list-label-widget-content a").click(function(){
- if ($(this).attr("href") != undefined) document.location = $(this).attr("href");
- });
- })
- --></script>
以上。
一応クリックイベントを仕込んで、開く閉じるもできるようにしてるけど、
開いてるとき、閉じてるときの押す場所のイメージの変更とかは、テンプレートにも絡んでくるんで、
手をつけなかった。
liにイベント仕込んでるのが我ながらアレだよなぁ…。
まあ、とりあえずはこんなもんか。
2010/06/06追記
「|」だとフィードが取れないので「/」に変更。
0 件のコメント:
コメントを投稿