「<a name="more"></a>
」を回避する方法
追記リンクのためにページ内に表示されてしまう<a name="more"></a>
を回避するためのちょっとしたハックです。Seesaa系のブログサービスに共通して起きる現象のようなので、Seesaaブログやさくらのブログなどにも対応できると思います。
そもそも「<a name="more"></a>
」について
HTMLのソースコードを見てもらえばわかりますが、ファンブログでは追記の直前に<a name="more"></a>
という記述があります。これはリンク先(目的地)のアンカーとして過去に用いられていた手法で、現在ではid
属性にかえられるべきものです。この場合、a
要素が空なのでこれを削除して直近の要素のid
属性を使うのが一番いい修正方法ですが、<a id="more"></a>
としてもかまわないと思います。
ただ、a
要素のname
属性はHTML5では一応廃止されたことにはなっていますが、W3C勧告によるとconforming features
(直訳すると適合機能ってところですか?)としてThe presence of a
とあります。つまり空でないならいいとのことで、実際Validatorでも「Warning」は出るものの結果は「Passed」です。なのでそこまで気にすることでもないのかもしれませんが、ってそれじゃあこの記事の必要性は……name
attribute on an a
element, if its value is not the empty string.
「<a name="more"></a>
」の回避法
では気を取り直して<a name="more"></a>
の回避法です。「本文」しか使っていない場合と「追記」もある場合とで若干違いがありますが、やっていることはほとんど同じです。
「本文」のみの場合は投稿時に次のコードを指定箇所に挿入します。
- 「本文」の末尾に
<!--
- 「追記リンク文言」に
<a>
- 「追記」の冒頭に
-->
「追記」もある場合は次のようになります。
- 「本文」の末尾に
<!--
- 「追記リンク文言」に
<a href="/ブログ名/archive/記事番号/0#more">追記リンク文言
- 「追記」の冒頭に
--><要素名 id="more"></要素名>
たとえばこの記事なら「追記リンク文言」には<a href="/trialanderror/archive/8/0#more">続きを読む...
、「追記」の冒頭には--><h2 id="more"></h2>
と記述しています。
回避コードの解説
上記のコードは簡単にいえば問題の部分をコメントアウトしてなかったことにしているだけです。といえば十分のような気もしますが、一応解説します。
まず<a name="more"></a>
は本文の直後、追記の直前に表示されます。したがって表示されるのは追記があるページ、つまり記事ページです。
この部分が本文の最後と追記の最初のコードによってコメント宣言ではさまれてコメントアウトされます。
そしてコメントの終了宣言の直後のタグにid="more"
と記述することで、単なるコメントとなったa
要素の代わりにこのタグの要素(この場合h2
要素)が追記リンクのリンク先になります。これは追記がない場合には必要ないため、コメントの終了コードのみになります。
これで<a name="more"></a>
を黙殺できましたが、このままでは本文最後のコメント開始コードが追記リンク自体もコメントにしてしまいます。これは記事ページではなく、追記がないページ(トップページなど)に表示されます。
a
タグの開始タグの終わり(紛らわしい)がなぜかコメント終了コードに変わってしまっています。ファンブログはコメントを開いたままにするとこういう挙動をするようです。それはいいとして、次はコメントアウトされた追記リンクの代わりに改めて追記リンク<a href="/ブログ名/archive/記事番号/0#more">追記リンク文言
を「追記リンク文言」に記述して強引に復活させます。
これも追記がない場合には必要ないのですが、そのままにするとa
タグの終了タグだけが残ってしまうので<a>
だけを記述して内容が空のa
要素にしておきます。
これで<a name="more"></a>
は無効化されたはずです。見た目に変化はないと思いますが、W3C的には好ましい文書になっていることでしょう。ただ実際のところValidかどうかよりもSEO的にどうなのかが重要なのかもしれませんが。
で、問題はない?
あるかもしれません。よほど古いブラウザでない限り大丈夫だとは思いますが。
コメントの内部にタグを内包することには文法上の問題はありません。<a href="/fanblog-master/archive/1/0#more">続きを読む...
のようにハイフンが入ることは避けたほうがいいとは思いますが、これも2連ハイフンでなければ文法上はセーフです。
また、href
属性のないa要素もHTML5では認められています。一応スタイル指定でdisplay: none;
とでもしておいたほうが安全かもしれません。
あとは、すでに大量の記事がある場合にはちょっと厳しいくらいですか。うん、ちょっとというか、致命的問題ですね。