|Blogger|template| ページタイプによる Widget 操作の注意点
フィードウィジェットは他ブログサービスなどでは見掛けない,特徴的な機能の一つと思います.
【”最新のコメント”を追加する方法】 などを見ても面白い使い方ができそう.
しかしながら,テンプレ編集(Expand 表示)で Blogger 独自のタグ群を見つめているとき,ウィジェットタグ<b:widget>...</b:widget>
内で特異な ID 指定がされていることに気づきます.
つまり,ブログの動的HTML生成時にウィジェット部分の (x)HTML を吐き出したあと, JavaScript でその ID のコンテンツの書き換えを行っているということでしょうか?
だから何なの・・・?
ウィジェットを記事単独ページで非表示にするために,
<b:includable id='main'>
<b:if cond='data:blog.pageType != "item"'>
<!-- コンテンツ -->
</b:if>
</b:includable>
とする手法がありますが,これだと
<ul/>
タグに指定されている ID をページ構成時に消してしまいます.これは不味い
この ID が削除されたことは,Blogger の方は知りません.従って,単独ページの構成時に Blogger の JavaScript が存在しない ID を参照してしまい JavaScript エラーが発生します.
他の大部分のウィジェットでは,あまりウィジェットタグ内で ID 指定などされていないようですが,フィードウィジェットに関しては非表示にした場合,ID 参照エラーが起こり,その時点で Script がストップしてしまいます.
従って,記事単独ページにおいて Script がストップしてしまい,同様の JavaScript で実現されるバックリンクが表示されない,というの現象があります.
じゃあ,どうすればいいの
- 特定のページで非表示にしない
- 非表示にしたい場合は以下のようにする
青字: ID 指定の部分. コンテンツのラッパ部分は残す.
<b:includable id='main'>
<b:if cond='data:blog.pageType != "item"'>
<h2><data:title/></h2>
</b:if>
<div class='widget-content'>
<ul expr:id='data:widget.instanceId + "_feedItemListDisplay"'>
<b:if cond='data:blog.pageType != "item"'>
<!-- ループ -->
</b:if>
</ul>
<b:include name='quickedit'/>
</div>
</b:includable>
タイトルとアイテムのみ除去
なんか面倒ねー・・・
これは,Blogger のバグだと考えられます. そもそも Blogger ブログは CSS エラーも多い!
Blogger ヘルプのレイアウト用ウィジェット要素タグ欄を見ると,
<b:widget/>
タグにはページタイプによる表示/非表示を指定する属性が定義されている模様(typePage
).但し,現在実装されていません.(at 2007/01/29.)
恐らく,将来的にはページエレメントの編集画面などで,正式にページの種類による表示非表示の指定ができるようになると思います.
・・・そうなることを待ちましょう.
2 comments:
Jyun.さん、どもでーす。
なるほど、よく判りました(きちんと理解できていないかも知れませんが、それは私の理解力の所為です(笑))。
><b:widget/>タグにはページタイプによる表示/非表示を指定する属性が…将来的にはページエレメントの編集画面など…
ふむふむ。
なるほど、そうだったのですか。
ドラッグ&ドロップのページエレメント編集画面で、各エレメントごとに表示するページを指定できるようになる可能性があるという事ですね~。
そうでしょうね。
if文を使う方法は過渡的なものになりそうですね。
判りやすく解説して下さり、有難うございました。
理屈を理解していると、テンプレートをいじる自由度が広がりますね。
ではでは、今後とも宜しくお願いしまーす。
恐らく,きちんと理解できないのは,僕の所為です.
説明ベタですいません…. ホンマに.
>各エレメントごとに表示するページを指定できるようになる可能性がある
そうですね,あんまり適当なこと言える立場でもないので,可能性があるかも程度で,考えています,自分は.
でも,早くそうなるといいですねー.
英語自信無いのでバグ報告も要望もできません・・・小心者デス.
Post a Comment