2006年3月19日(日)

« 昨夜の積ん読キュー追加分 | トップページ | 【メモ】ココログのマイリストを記事中に埋めこむ »

サイドバー折り畳み2:タイトルボタンとタイトルリンクの競合回避

先日、サイドバーのリストタイトルをサイドバー折り畳み2のボタンにしてみたのですが、あのままだとちょっとまずいかな、というところがありました。

facetさんからもご指摘がありましたように、『バックナンバー』についてはリストタイトル部がリンクになっていますが、この部分をクリックすると……本来のリンクイベントの他に折り畳みのイベントまで走ってしまう、という競合の問題がでてしまいます。

これをなんとか解消出来ないか、ということで、いまのところ

  1. リストタイトルのリンク部を別のところに追い出す(facetさん方式)。
  2. リストタイトルのリンク上にマウスがある場合だけ折り畳みを無効にする(風柳方式)。
とう方法が考案されています。

1.の方は、そもそもリストタイトルからリンクを追い出してしまうので、(リンクのない)通常のリストタイトルボタンと同様に使えるメリットがある一方、追出し先の表示を考えないといけないのと、リストタイトルにリンクがあることを前提としたテンプレートとの相性が悪くなる
2.の方は、見た目的にはこれまでと変わらないメリットがあるが、リンク部以外にクリックするところがないようなテンプレートの場合、折り畳みの切替機能が実質無効となってしまう
……ということで、それぞれ一長一短があります。

それで、とりあえず、facetさんのテスト版スクリプト(02c11)をベースに、設置する環境により2方式のどちらかを選択出来るよう、当方でパッチをあててみました

facetさんの記事にある設置用スクリプトのうち、
の箇所を
に修正し、新たに、
のあたりに、
のような記述を追加することで、とりあえず試してみることは出来ます(今まで通り切替ボタン(+/-)も表示したままにしたい場合はswitchStyle = "display:none"は不要。)。

上で書いた方式 1.を使用する場合には、hangTitleLink を true に、方式2.を使用する場合は false にします。

リストタイトルを追い出す場合(方式1:hangTitleLink=ture)、追い出したリンクをどのように表示するかは、hangTitlePosition と hangText、及び、表示用 CSS の設定により行います。

hangTitlePositionには、リンクの設定されたリストタイトル毎に(といっても現在は実質"バックナンバー"だけですが)、表示位置を指定します。

none非表示
top一覧の上に表示
bottom一覧の下に表示
list-top一覧内の一番上に表示
list-bottom一覧内の一番下に表示

hangTextは、リンクの設定されたリストタイトル毎に、表示用の文言を設定します。
なお、ここで設定した文言は、方式2(hangTitleLink=false)でリンクをポイントしたときにも使われます。

CSSは、次のような感じで、".sidebar div.module-body div.hang-link-(hangTitlePositionで設定できる種別)"毎に設定します。

なお、リンクが『バックナンバー』だけではちょっと寂しいので(笑)、現在の当サイトでは JavaScript を使って『カテゴリー』にも無理やりリンクを設定し、それを上記のスクリプトで追い出す、という、なんだか訳がわからないことをやっていたりします(^^;。
ちなみに、そのスクリプトはこんな感じ(折り畳みより前に設定)。

自己満足というかなんというか、『手段のためには目的を選ばない』なぁ、我ながら(苦笑)。

2006.03.19
追い出し設定をしていない(hangTitlePositionに未登録の)リストタイトルに関しては、自動的に方式2.(リンクはそのままにして切り替え対象外領域とする)が適用されるように修正。
2006.03.19
カテゴリーにリンクを追加するスクリプト内で、既存Aタグがあるかをチェックするために何故か
if ( h2.getAttribute('a') ) return ;
としていたのを、
if ( h2.getElementsByTagName('a').length ) return ;
に修正。
ま、眠かったからね(-_-;)……もっとスマートな方法あるのかな(・_・?)・。

この記事をニフティクリップβに追加 この記事をはてなブックマークに追加 2006/03/19(日) 02:31 | | 記事の編集(管理者用)

風柳へひとこと(web拍手) 

おもいつき」カテゴリの記事

ウェブログ・ココログ関連」カテゴリの記事

パソコン・インターネット」カテゴリの記事

覚書」カテゴリの記事

トラックバック

この記事のトラックバックURL:

記事との関連性が薄いものやSPAM等、管理人が不適切と見なしたトラックバックについては予告無く削除する場合が有ります。悪しからずご了承下さい。

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/161784/9153919

この記事へのトラックバック一覧です: サイドバー折り畳み2:タイトルボタンとタイトルリンクの競合回避:

コメント

風柳さん、こんにちは!

facetさんの「foldSidebar02c.js」から、風柳さんのこの記事に辿り着きました!
何だか、凄く難しそうなので・・・出来るかどうか分かりませんが、「foldSidebar02c11.js」 と 「パッチをあててみました」をバウンロードさせて頂きました  m(_ _)m
どうぞよろしくお願いいたします☆

投稿: ろんちゃん | 2006/08/21 10:48:29


風柳さん、こんにちは☆

今、私のブログで使用しているfacetさん作の開閉ボタンはIEでは動作するのですが、それ以外では開いたままの状態になります。
もし、IE以外の環境でも、全て閉じた状態に変えた場合、閉じたリストの中身は検索ロボットに拾われなくなるのでしょうか(??)

私はそのあたりが全くウトイので、馬鹿げた質問にお思いになるでしょうが、もし宜しければ教えて貰えませんか?

どうぞよろしくお願いいたします。m(_ _)m

投稿: ろんちゃん | 2006/08/23 17:13:59


風柳さん、こんにちは♪

先日はサイドバー折り畳み2に関して、コメントさせて頂きましたが、大変失礼しました。
よくよく考えた結果、今の開閉ボタンのままにすることに致しました。
最近、カスタマイズにも少々疲れを感じているので・・・
暫くは、ブログの内容(記事)に集中しようかと・・・思っております。

失礼なコメントや馬鹿げた質問に対し、大変申し訳ありませんでした。
m(_ _)m

投稿: ろんちゃん | 2006/08/28 11:43:45


ろんちゃんさん、どうもです。

これ、3月のメンテ前に修正したもので、その後 facet さんが大幅改修されており、その内容については反映していないため、当方のスクリプトを使うといろいろ不具合が出るものと思われます。

ですので、そのまま facet さんのものをお使いになる方が賢明かと(^^;。

なお、折畳みスクリプトを使って折畳んだとしても、あくまでブラウザでの見た目がそうなっているだけで、検索エンジン(ロボット)の動作には関係ないですよ(折畳対象部分も検索にひっかかる)。
#通常の検索エンジン(ロボット)はスクリプトは動作させずに拾っていきますので

投稿: 風柳>ろんちゃん さん | 2006/09/04 22:47:46


コメントを書く