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)
数珠繋ぎが使えないなら普通に書いたらどなんだろ?と試してみたら、でーきたー!

posted by あかたま at 12:51 | Comment(0) | 日記・駄文#3

2010年10月22日

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

昨日2010年10月21日、さくらのブログが久々にバージョンアップ。オリジナルであるSeesaaブログに近づきました。新機能で、トップページのページングやら、他サービスとの連携やら、色々増えました。重いの嫌いだから、あんま色々足さないで欲しいんだけど…それはカスタマイズで削りまくり。しかし色々チェックしてると、何か余計なものが勝手に増えてるぞ、と。

<body>タグの直後に、iPhone最適化ページへのリンクコードが挿入されてる!

カスタマイズにより、トップ・記事・過去ログ・カテゴリーページのhtmlヘッダ部はメインコンテンツ内で生成してるので、コメント確認ページと記事検索結果ページにしか影響が無かったが、非常に気になるし何かウザイ。でまぁ、実験用ブログの方で暇見て回避する方法が無いかを探していたら、回避する事に成功。結論から言うと、次のように書く事で回避可能だった。

<body>
 ↓
<bo<% if:0 %><% /if %>dy>

要するに、ベースHTML中に"<body>"そのものの文字列が存在しなければOKだった。テンプレート解析エンジンを通した結果、最終的に <body> が出力されるようにしてやる、と。他にもちょろっと試してみて、if分岐の中にやっぱり"<body>"そのものがあっても駄目だったので、テンプレート解析エンジンの最終段で文字列比較して挿入するのではなく、ページソースに書き出す際に、"<body>"を含む文字列が一括で送られるとアウトなんかな。知らんけど。
</body> タグ直前に <!-- common footer --> が挿入されるのも、同様でOK。
※Seesaaブログでもできる…かも。

あとは、内部関数 bodyfilter() を通すと、先頭に <!-- MATCH SEESAA : NO FLOATING --> が挿入されてしまう件。この関数を通さなければいい…ハズなんだけども、この関数で「改行のbr置換」や「リンク補完」も行なわれてるので、外してしまうと、記事設定によってそれら処理を切り替える事ができなくなってしまう。どうしたもんかなー、コレ。

オマケ:その他弄りながら判った事
・<% blog.index_page_cnt %> … 設定>ブログ設定>「トップページ表示件数」の値
・<% blog.archives_page_cnt %> … 設定>ブログ設定>「過去ログページ」の値
・<% blog.category_page_cnt %> … 設定>ブログ設定>「記事カテゴリページ」の値
・<% pager.current_page %> … ページャーの現在ページ
・<% pager.first_page %> … ページャーの先頭ページ
・<% pager.last_page %> … ページャーの最終ページ

…ページャーに先頭ページ・最終ページへのリンクも出すようにしてみたんだけどね。まさか記事数上限1,000記事(ブログ設定でトップページ表示件数5件に設定してるので、÷5で200ページが最後になる)制限があるとは思わなかったよ。あとページャーはどうも非公開記事も記事数にカウントしてるようで、日付降順で1,000件内に非公開記事が存在すると、最終ページが空になる場合がありうるっつーのもなんだかなぁ。

追記(2010/10/26 12:20)
ifブロックを途中に挟んで分割するよりも、echo()で出力させた方が判りやすいか。例えば <<% echo('body') %>> のように書けばいい。注意点は、echo()の中に'<'と'>'が両方含まれる場合に構文エラーとなる事かな(なので'<'と'>'をechoの外に出してる)。

追記(2010/11/10)
ページャーを更に弄って、なんちゃってWordPressのpagebar風にしてみた。pagebarの場合はページ番号の表示数が一定なんだけども、コイツは先頭と最終ページが表示数に含まれる場合(…説明し辛いな、1〜3ページ目と最終-2〜最終ページ)に数が異なる挙動になってる…コレを一定にしようと思ったら、もちっと分岐書かなくてはならず、面倒臭くなってヤメちゃった。
実際のコードも一応上げておこうか…余計な改行を出力しないようにする為、かなりイビツなコードだけど。

posted by あかたま at 19:50 | Comment(0) | 日記・駄文#3

2010年09月28日

めもめも@2010/09/28

オウチにネット開通したのはいいのだが、相方にココの存在をまだバラしていないので、オウチでは何も出来ないのであった。しっかし、さくらのブログ、再構築の反応が鈍すぎて困る。記事投稿画面から保存>再構築完了>「記事を見る」リンククリックして確認>404 NOT FOUNDって何のギャグだ?

マイクロアドの広告サーバに攻撃、毎日jpやImpress Watchなど100サイト閲覧者にマルウェア感染の疑い (ITmedia News)
お詫び:外部配信広告サーバーの障害について (Impress Watch)
マイクロアド広告サーバーが改ざん、Impress Watchほか複数メディアで影響 (INTERNET Watch)
ADサーバー掲出タグによるセキュリティアラートと対処について (スラッシュドット)
偽セキュリティソフト「Security Tool」感染爆発、原因はマイクロアドの広告配信サーバへの攻撃 (GIGAZINE)
マイクロアドの広告配信サーバ改ざん(1)配信先で偽セキュリティソフトに感染 (So-net セキュリティ通信)
マイクロアドの広告配信サーバ改ざん(2)「改ざん告知サイト」一覧 (So-net セキュリティ通信)
昨日のネタだけど、見事踏んでたので(感染はしてないが)。
土曜日夜に Impress Watch 開いたら、hcpプロトコルのダウンロード確認メッセージ(IE8ビルトインのダイアログかな?)が出たのよね。FixItでhcp無効にしてたかな…もしかしたらソレで実行阻止できたのかな。土曜日には何の情報も無かったから、IEキャッシュフォルダやらTempフォルダやら、自動実行の確認もしたが、なーんにも見つからず。公開された情報から再度チェックしてみたが、感染はしてなかったよ、ヨカター。
ウィルス対策ソフトは…Microsoft Security Essentials しか入れてなかったんだが、あんまり当てにしない方がヨサゲかしら。

posted by あかたま at 19:27 | Comment(0) | 覚書・メモ#5

2010年09月10日

めもめも@2010/09/10

最近、久しぶりに暇見てちびちびブログのテンプレートやらCSSやらを弄って、Another HTML lintでエラー無し・減点無しの警告もない「たいへんよくできました」の100点を見る事がでけた…トップページのみだけど。
過去記事は〜、brの連続やら、&を&amp;と書かなきゃいけないだの(リンクURLに含まれてて見過ごしてたの多数)を直す必要があり、エライ面倒…もういいかな。

キングジム、電子メモパッド「Boogie Board」を国内で販売 (家電Watch)
欲しいのである。キングジム以外でも国内の取り扱いはあるが、キングジムの予価より500円高いんかな?その程度なら、さっさと買ってしまうのもアリではあるか。

ラ王CM、槍ケ岳で迷惑撮影 登山者遮り、ヘリ強行使用 (asahi.com)
ヘリ飛ばすなっつー自粛要請あったのにヘリ飛ばしたんかいな…ダメじゃんか。

Adobe ReaderとAcrobatに新たな脆弱性、ゼロデイ攻撃が出現 (ITpro)
■【ゼロデイ攻撃】Adobe Readerの未修整の脆弱性狙うトロイの木馬 (So-net セキュリティ通信)
今度のは設定で回避できないのか?と思ったら、Acrobat JavaScriptの実行が行なわれないようにしておけば、コードが実行されるのは回避できるのね。実行しないように設定してたハズだが、念の為に見直しとくか。

posted by あかたま at 19:55 | Comment(0) | 覚書・メモ#5

2010年08月26日

明日、復活。

明日、復活。…するかもしれないし、しないかもしれない。

とりあえず、明日の午後にネット開通する予定、やほーい。しかし実家からPC運んでない。まーメインPC様を運ぶツモリはさらさら無く、だってCoolerMasterのCM Stackerだぜ?そんなデカイのどーすんだよ。なので、とりあえずはノートPC(Thinkpad X30とX40)を回収してこよーかなーってトコだ。

無くてもPS3さんで何とかなりそうな気もするが。つか、QoreやFirstPlayが久々にダウンロードできるわけで、ソッチの方がウレシイわー。

posted by あかたま at 19:09 | Comment(4) | 日記・駄文#3