前のエントリーでちらっと書いたんですが、他に同じことをしている例が見つからなかったので、一応ちゃんと紹介しておくことにします(ずーっと以前に雲の上のDanielさんがこれに近いことをされていたようですが、それとはまた違う方法)。
FC2ブログの独自変数のひとつに、<%comment_url+str>というものがあります。これは<!--comment-->〜<!--/comment-->内で使用でき、コメント投稿者がURLを入力していた場合に「URL」という文字列にリンクが張られる、というもの。そして、URLが入力されていなかった場合でも空のリンクは生成されない、というのがこの変数の便利なところなんですが、しかしその場合でも「URL」という文字列だけは表示されてしまいます。以下はこの文字列を非表示(不可視と言ったほうが正しいかも)にする方法です。
HTMLの編集で、<%comment_url+str>の部分を以下のように書き換えます。
<span class="commenturl"><%comment_url+str></span>
そして、CSSに以下のコードを追加します。
.commenturl {
visibility: hidden;
}
.commenturl a {
visibility: visible;
}
以上で完了ですが、注意点があります。visibility: hidden;は、display: none;とは違って、ボックスを生成させなくするのではなく、生成されるボックスを不可視化するものです。すなわちボックス自体は生成され、その部分はレイアウトに影響を与えます。なので、<%comment_url+str>の直後に何か(たとえばコメントの投稿時間)を記述すると、「URL」という文字列が表示されるはずであった部分に空白ができてしまいます。というわけで、この小技を使う際は、<%comment_url+str>が行の末尾(右寄せの場合は、先頭)にくるように工夫してください(よく考えると微妙な技だな)。
ところで何故display: none;を使用しないのかというと、実はこのdisplay: none;が指定してあると、子孫要素のdisplayに他の値を指定していても、その値が上書きされないからです。……という基本的なことを理解せずに、当初はdisplayを使って悪戦苦闘しておりました。まだまだ勉強不足です。