不完全なスクリプトを仕込みました。

御賞味ください(笑)

詳細は夜、この続きを書きます。

[夜の部]

えー、本日のlivedoor Blogのシステム変更でHTMLのタグ構成が変わったようで、IE6.0やMozilla1.5では問題なく動作してますが、なぜかOperaで動いていたこのスクリプトが効かなくなってしまいました。ブツブツ…。

[その後、あっさり復旧しました]

まあそれはそれとして、当初の予定通り説明します。

スクリプトのURLは下記の通りです。これをサイドバープラグインの一番最後に導入しています。手馴れた方ならば、適当に直してお使いになれると思います。

http://image.blog.livedoor.jp/kyorecoba/8404df2b.js

[2004.2.8追記]
このスクリプトは私のBlog用に書いたものです。
これをそのままご自分のBlogでお使いになっても、次のコラムも一緒に畳んでしまうなど、変な動作になってしまいます。

手馴れて無い方のために、一応説明してみます。

上のリンク先のスクリプトは、私のところに導入するためにいろいろ書いていますが、重要な骨組みは下記のコラム内の部分です。このまま手元のテキストエディタにコピペして、"[]"の部分だけに注目して書きかえれば、ともかくローカル環境での実験はできると思います。

function toggleOpenClose(id){
  if(document.getElementById(id).style.display == "block"){
    document.getElementById(id).style.display = "none";
  }
  else{
    document.getElementById(id).style.display = "block";
  }
}

var aryDiv = document.getElementsByTagName("div");
for(var i = 0; i < aryDiv.length; i++){
  if(aryDiv[i].getAttribute("class") == "sidetitle" ||
   aryDiv[i].getAttribute("className") == "sidetitle"){
    /*>---------- ここから ----------<*/
    if(aryDiv[i].innerHTML == "[コラムのタイトル]"){
      aryDiv[i].innerHTML =
      '<label for="[ボタンのid]">[コラムのタイトル]</label>/* 改行しちゃ駄目 */
<input type="checkbox" id="[ボタンのid]" onclick="toggleOpenClose(\'[コラムのid]\');"/>';
    aryDiv[i+1].setAttribute("id", "[コラムのid]");
    }
    /*>---------- ここまでが1コラムの記述 ----------<*/

    /*== 2つ以上のコラムを開閉したい場合は ==*/
    /*== ここと ==*/

    /*== ここの間の領域にコピーした上で修正 ==*/
  }
}

if(document.getElementById){
  document.writeln('<style type="text/css" media="all">');
  document.writeln('<!--');
  /*>---------- ここから ----------<*/
  document.writeln('#[コラムのid]{display:none;}');
  /*>---------- ここまでが1コラムの記述 ----------<*/
  /*== 2つ以上のコラムを開閉したい場合は ==*/
  /*== ここと ==*/

  /*== ここの間の領域にコピーした上で修正 ==*/
  document.writeln('-->');
  document.writeln('</style>');
}

[2004.2.8追記]
初出の際に誤記がありました。
関数"toggleOpenClose"の引数は「コラムのid」であるはずなのに、初出では「コラムのタイトル」と誤記しておりました。
これによってうまく動作せずにお手数をおかけしてしまった方、謹んでお詫びします。大変申し訳ありませんでした。

改行しちゃ駄目」のところは体裁のために改行してますが、コピペした後、改行コードを削除して一連の行にしてください。そんなことしなくても大丈夫とは思いますが、試して無いのでわかりません…(汗)。

上のスクリプト中で書き換えるべき箇所は赤色で示してあります。以下の3つの文字列をお使いになる場合にあらかじめ決定する必要があります。

  1. 畳みたいコラムのタイトル
  2. 畳みたいコラムの"id"
  3. 畳みたいコラムに付けるボタンの"id"

""の方はもう既に決まっていますね。どんな文字列でもかまいません。Blogを表示させてそのままコピペするだけです。

""は、日本語では駄目ですし、間に空白があっても駄目です。普通は""を連想するような一連のやや長めの英文字列にするのが無難です。例えば、月ごとの記事リストの場合だと、"archives"などと決定します。小文字で統一した方がいいでしょう。

""も、""と同じく日本語では駄目ですし、間に空白があっても駄目です。普通は""に関連付けてごく短い一連の英文字列を指定するのが無難です。例えば、"archives"に対応して"btnAr"などと決定します。

スクリプトは必ず文字コード"EUC-JP"で保存します。これをしないとスクリプトを動かしたときに最悪ブラウザが死にます(笑)。

また、保存するファイル名の拡張子は".js"とします。どうせアップロードすると適当な名前に変えられてしまいますから、前半の名前は何でもいいです。

あとは、プラグインの最後尾に"JavaScript"として導入し、「トップページ」の再構築をするだけです。

[2004.2.8追記]
上のコラムのスクリプト内に、1コラムに必要なコードの範囲を示すコメントを追記しました。
2つ以上のコラムを開閉する場合、コメントで示した範囲をコピーし、指定した領域にペーストした後、同様に修正します。