MT:特定のカテゴリーのカテゴリ月別アーカイブを出力する
2013.02.06
●カテゴリーA
 ・サブカテゴリーA
 ・サブカテゴリーB
 ・サブカテゴリーC
●カテゴリーB
●カテゴリーC

上記のような構造で、例えばサブカテゴリーAのアーカイブページに、
親であるカテゴリーAの「カテゴリ月別アーカイブリスト」を出力しようとしても、
サブカテゴリーAのものが出力されてしまいました。

ソースは下記のような感じです。

<mt:TopLevelParent>
<ul>
<mt:ArchiveList archive_type="Category-Monthly">
<li><a href="<$mt:ArchiveLink$>"><$mt:ArchiveDate$></a></li>
</mt:ArchiveList>
</ul>
</mt:TopLevelParent>


散々悩みましたが、最終的には次のようにすることで解決できました。

<mt:BlogID setvar="blog_id">
<mt:Blogs include_blogs="$blog_id" ignore_archive_context="1">
<mt:IfCategory name="カテゴリー名">
<ul>
<mt:ArchiveList archive_type="Category-Monthly">
<li><a href="<$mt:ArchiveLink$>"><$mt:ArchiveDate$></a></li>
</mt:ArchiveList>
</ul>
</mt:IfCategory>
</mt:Blogs>


ブログIDからの指定にして「ignore_archive_context="1"」と入れることで、
アーカイブページでも全ての記事を参照できるようになるそうです。
MT:スパムコメント対策 その2
2012.11.20
前回の記事 MT:スパムコメント対策 では
スパムコメントを防ぎきれなかったため、次なる対策を講じることに。

今回はプラグインも取り入れます!

■keystrokes.pl
http://overstated.net/projects/mt-keystrokes/

このプラグインは、
・コメントフォームに直接入力したか
・送信ボタンを直接押したか
をJavaScriptで判断し、そうでないものを弾いてくれます。

JSが無効だとコメントできないため、少し乱暴な気もしますが・・
スパム対策には間違いなく有効だとのことで。

またMT3.X用ですが、修正すれば5.Xでも使えます。


■手順

1. keystrokes.plをダウンロード
http://overstated.net/projects/mt-keystrokes/
上記サイトの右上にある「DOWNLOAD」から、keystrokes-0.1.5.zip をダウンロード。
※0.1.5と書かれていますが落せるデータは0.1.4です。
さらにプラグイン内に書かれたバージョンは0.1.3になってます。不思議ですが問題なし。

2. 解凍後、plugins フォルダ内の keystrokes.pl を修正
return 1 unless $MT::VERSION =~ m(^3\.);
赤字部分を5(使っているMTのバージョン)に変えます。

3. MTフォルダ内の plugins フォルダに keystrokes.pl をアップ
ダイナミック・パブリッシングを使っている場合は、
php フォルダも同様に MT > php フォルダにアップ。

4. テンプレートを修正
コメントフォームのソースが書かれたテンプレートを下記のように書き換える。
(デフォルトなら コメント と コメントプレビュー )

●<form>タグの直後に <$MTKeystrokes$> を追加
<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" id="comments-form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
<$MTKeystrokes$>
<input type="hidden" name="static" value="1" />

●<textarea>タグに onkeypress="keystrokes(this.form)" を追加
<textarea id="comment-text" name="text" onkeypress="keystrokes(this.form)" rows="15" cols="50">

●投稿ボタンの<input>タグに onclick="keystrokes(this.form)" を追加
<input type="submit" onclick="keystrokes(this.form)" accesskey="s" name="post" id="comment-submit" value="投稿" />

5. 再構築


以上で完了です。
これで今度こそスパムコメント対策ができた!・・はずです。


【参考にした記事】
Movabletype3.3コメントスパム対策 | フリーソフトダウンロード5
http://ww-ape.com/movabletype/kome_spam3.html

MT5.1の再構築 早し!!
http://trendate.com/blog/archives/2010/02/mt51.php
MT:スパムコメント対策
2012.11.13
最近当ブログもスパムコメントが鬱陶しくなってきましたので、
なにかスパム対策を施してみることに。

※一週間ほど様子をみましたが、下記の方法では現在来ている
スパムコメントを防げないようでした。
そのため新しい対策を こちら で取っています。



どうやらスパマーはコメントフォームのHTMLに書かれている
コメントCGIのパスを参照してくるそうで、
そのパスを実体参照にすればほとんどのスパムコメントを防げるとか。

合わせて、コメントCGIのファイル名も変更すると効果UPだそうです。
(デフォルトではmt-comments.cgi)


■手順
1. MTフォルダにある「mt-comments.cgi」を適当な名前にリネーム

2. 1で新たにつけたファイル名を、こちらのサイト等で変換

3. 同階層にある「mt-config.cgi」を開き、一番下に下記を追記
--------------------
CommentScript ○○○○(2で変換した文字列)
--------------------

4. 再構築


これで完了です。

ブログのテンプレートで<$mt:CommentScript$>タグを使って
コメントCGIを参照しているブログならこれだけでOKですし、
新しくブログを作ったときも反映されるのでお手軽です。
Firefox 16 で、MTのカテゴリおよびフォルダの選択が保存できない
2012.10.19
先日会社のブログを更新しようとしていたところ、記事公開時にエラーが・・・
何度やってもエラーが解消されず、よくよく調べたら下記のようなことが起こっていました。


Firefox16でMovable Typeのカテゴリ・フォルダ選択ができない不具合について
Firefox 16 でカテゴリおよびフォルダの選択が保存できない。


自分はFirefoxのブラウザをメインで使用しているのですが、
どうやら新しいバージョンのFirefox16では、MovableTypeののカテゴリを選択できない。
という謎のバグが発生していた為でした。

解消するためのバッチが配布されているようですが、
もうChromeメインに乗り換えようかな・・・
ダブルクオテーション「”」を置き換える
2011.10.03

MovableTypeにて、entrytitleやentrybody内の文字列にダブルクオテーション「"」を使うと、javascriptを使用した際にエラーになってしまいます。

以前、この問題で悩んだ際に解決方法を教えてもらったような、検索したような気がしますが、急に対応が必要でなかったこともあり放っておいてしまいました。今、対応が必要となり探ります。


MT タグとあわせて利用する「グローバル・モディファイア」というものがあるようです。アトリビュートですね。


まずは、replaceというものがあるようです。

たとえば、「&」を「&amp;」に置き換えるには
<$mt:entrytitle replace="&","&amp;"$>
となります。


便利そうですが、今回の「"」の置き換えは、これで解決できそうにありません。

ここで、違うグローバルモディファイアを発見しました。
Movable Typeの『グローバル・モディファイアリファレンス』(encode_htmlとかencode_js)

-----
●encode_js
javascriptで「"」を入れるとエラーになるので変換してくれます。
「"」を「¥"」という形に変換してくれます。

『<$mt:EntryTitle encode_js="1" $>』

こんな感じで使用します。
-----

1 に設定すると、MT タグの値が javascript の文字列の値として使えるようにエンコードするようです。解決方法はまさにこれです。


この他にも

●encode_html
1 に設定すると、MT タグの値が 「<」を「&lt;」、「&」を「&nbsp;」などの形にHTMLエンコード

『<$mt:EntryTitle encode_html="1" $>』

こんなのが、かなり使えそう。助かりました。


月別アーカイブ