スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

FC2ブログで「追記がある場合に表示させない部分」を作る

FC2 Logo

FC2ブログには以下の変数があって、「追記がある場合に表示させる部分」は簡単に作ることができる。本来は普通に追記部分を表示させるためのものだが、ひと工夫すれば「追記がある場合にのみ表示させる広告」なども簡単に実現可能になっている。

追記があるときに表示をおこなう変数

個別記事ページ(変数「permanent_area」相当)で追記があるときに表示する変数

<!--more-->
この部分に表示したいものを記述する
<!--/more-->

個別記事ページ以外(変数「not_permanent_area」相当)で追記があるときに表示する変数

<!--more_link-->
この部分に表示したいものを記述する
<!--/more_link-->

ところが今回自分がFC2ブログのテンプレートで実現したかったのは、「追記がある場合に表示させない部分を作る」というカスタマイズ。普通に本文だけで記事を投稿したときは表示させて、追記を利用したときにだけ表示させないブロックを作りたかったわけだ。

用途としては、上記の「追記があるときに表示する変数」とセットで使って、「追記の有無でmetaタグを切り分ける」という形で使うつもりだった。metaタグは種類によって同じものを同一ページ内で2回以上使えないものがあって、そういうときはどうしても「タグの記述を切り替える」という方法をとらざるを得ない。

ところが困ったことに、肝心の追記用に用意されている変数は「追記があるときのみに表示する」のタイプがあるだけ。今回必要な「追記の有無で切り替えたい」ときのことは考えられていない。

最初はこんなことを本当に実現できるのかよくわからなかったのだが、ちょっと発想の転換をすることで「追記がある場合に限って表示させない部分を作る」というカスタマイズを実現できることに気がついた。「最初から表示させない方法」を探すのではなくて、「表示されてもそれを無効化する方法」を考えればよかったのだった。

具体的には以下のように実装する。

追記があるときに「表示させない」ためのカスタマイズコード

個別記事ページ(変数「permanent_area」相当)で追記があるときに表示させない

<!--more--> <!-- <!--/more-->
この部分に表示させたくないものを記述する
<!--more--> --> <!--/more-->

個別記事ページ以外(変数「not_permanent_area」相当)で追記があるときに表示させない

<!--more_link--> <!-- <!--/more_link-->
この部分に表示させたくないものを記述する
<!--more_link--> --> <!--/more_link-->

仕組みとしては単純で、「追記があるときに表示する変数を使って、その部分をコメントアウトする」という方法を使っているだけ。ソースへの記述自体はされてしまうが、ブラウザなどは単なるコメントとして扱うので、表示や処理に一切の影響を与えなくなる。「ページのソースを軽くする」という目的には使えないが、追記の有無による表示や処理の切り替えには普通に使えることを確認している。

なお、変数の<!--more_link--><!--more--> はどちらにしても<!--topentry-->の中でしか使えない点は注意して欲しい。

有効な使い所はそう多くないかも知れないが、小技として覚えてくとテンプレートのカスタマイズの幅が広がるのではないだろうか。