2010年10月26日

さくらのブログを弄る#6

記事本文中に挿入される <!-- MATCH SEESAA : NO FLOATING --> をブチ消すの巻。

暇見て使える関数ねーかなーと探していたら、「substr」関数が使える事が判明。

修正(2010/11/11)
元々ココにあった記載は削除しました。
色々試してみたトコロ、次の条件を同時に満たす場合に挿入される模様。
・記事の詳細設定の「キーワードマッチ」が「無効」
・広告設定の「広告の種類」が「キーワードマッチのみ」か「キーワード / 記事下」
…なので、記事に広告つけてない=全ての記事の詳細設定のキーワードマッチが無効なのであれば、広告設定・広告の種類を「記事下広告のみ」に設定変更するのが手っ取り早い。
じゃあと広告設定を変更したところ、以前ココに記載していたコードでは常に先頭35文字が削除される結果になる事が発覚。

<% if:article.body | bodyfilter(article_info,blog) | substr(0,35) eq '<!-- MATCH SEESAA : NO FLOATING -->' %>

コメント挿入有無の判定を上記のようにしていましたが、if文で関数の数珠繋ぎを使う事はできず、実質 <% if:article.body %> と同じ結果になります。article.body…即ち記事本文が空でなければ真になり、結果、全ての記事で先頭35文字が削除されていました。

ではどうするか?といったところですが、ブログの広告設定と記事詳細設定のキーワードマッチの値により、先頭35文字を削除するかどうかを判定する事も可能です。一応サンプルコード(要所のみ抜粋)も載せておきます。但し、今後挿入されるコメント文字列が35文字ではないものになる可能性もある事には注意してください。

元のコードは以下です。

<% article.entire_body | bodyfilter(article_info,blog) %>

これを次のようにします。

<% if:blog.ad_types ne '2' %>
<% if:article.affiliate_link == 0 %>
<% article.entire_body | bodyfilter(article_info,blog) | substr(35) %>
<% else %>
<% article.entire_body | bodyfilter(article_info,blog) %>
<% else %>
<% article.entire_body | bodyfilter(article_info,blog) %>
<% /if %>
<% /if %>

更に追記(2010/11/11)
数珠繋ぎが使えないなら普通に書いたらどなんだろ?と試してみたら、でーきたー!

とりあえず、パイプを使った場合は第一引数を省略して書けるようになってるに違いないと勝手に仮定して、テキトーに書いてみたら動くぞと。実験用ブログの方で、挿入される記事・されない記事どちらも正しい判定がされる事を確認した上でテンプレートを修正。以下がコードになります(こちらも要所のみ)。

<% if:substr(bodyfilter(article.body,article_info,blog),0,35) eq '<!-- MATCH SEESAA : NO FLOATING -->' %>
<% article.entire_body | bodyfilter(article_info,blog) | substr(35) %>
<% else %>
<% article.entire_body | bodyfilter(article_info,blog) %>
<% /if %>

…これで仮に仕様が変わっても大丈夫かな。

posted by あかたま at 12:51 | Comment(0) | 日記・駄文#3
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※半角英数字のみのコメントは受け付けません。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/41490988
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。
※半角英数字のみのトラックバックは受け付けません。

この記事へのトラックバック