プログラミング

このブログには、タグ付け機能を使って、「関連エントリーリスト」を生成し、記事の足元に配置してあります。(参照:関連エントリーリストを自動生成 – 朱雀式

しかしこれ、タグがついていない場合、つまり関連エントリーリストがない場合は、リストが空っぽで見出しだけが表示されてしまっていました。

こんな感じ

これだと、リストが空になっているせいで、HTMLの文法エラーが出てしまうのがちょっといやだったんですが、実害はないのでそのままにしていました。

しかし、あったのです、とんでもない影響が。

先日、Google様より「不正な広告誘導があるので、即刻なんとかしないと抹消する」旨の警告メールを頂戴し、一体どういうことかと調べてみると、例の「関連エントリーリストがないときのページ」が問題になってました。

(禁止行為)

メッセージによるクリックの誘導

下記の行為を行わないでください。

* “広告をクリック”、”協力してください”、”これらのリンクへアクセス”、またはその他の類似表現を使用して、Google 広告をクリックするようユーザーを誘導すること。
* Google の広告ユニットの上部に誤解を招くようなラベルを表示すること (“スポンサード リンク”は使用できますが、”お気に入りサイト”は使用できません)。

Google AdSense プログラム ポリシー Google AdSense ヘルプ センター

どうやらこの辺に引っかかったらしい。確かに言われてみれば、「関連エントリー」というラベルで広告へ誘導している、ように見えなくはない…。

しかし、この「関連エントリー」、タグが存在するときは表示して、存在しないときは表示しない、というようなif文で条件分岐でもできればいいんですが、そんなものはなく…。

とテンプレートのタグをしばらく眺めていたら気付きました。

<h4>関連エントリ</h4>

<dl>

<MTRelatedEntries lastn="5">
<dt><a href="<$MTEntryPermalink$>">

これで5件表示として、同様のリスト出力ループが同じページに複数回出てはいけない決まりはなかったはずなので、

<MTRelatedEntries lastn="1">

<h4>関連エントリ</h4>

<dl>
</MTRelatedEntries>
<MTRelatedEntries lastn="5">
<dt><a href="<$MTEntryPermalink$>">

こうして、関連エントリを出力するタグ自体を「関連エントリがあった時の1回出力」に含めてしまえば、タグが存在しないときは0回になるので表示されない、ということになります。ちょっと説明の意味が分かりにくいかもしれませんが、そういうことです。

必要は発明の母と言いますが、本当に切羽詰って必要に迫られたとき、人は工夫する力を発揮できるものですね。

(櫻木)