ちょっと必要が生じたので10月になってから急遽1つ新しいブログを作ってました。パソコンの調子が悪かったこともあって何も手を加えずMT4デフォルトそのまんまの状態ですが、(私にとっては)これだけはやっておかないと公開できない必要最低限のことだけは施しておいたので覚え書きしておきます。
1.設定>ブログの設定 を一通りチェックしておく
後から変えても差し支えないところはともかく、公開前にやっておくべきところはしっかりチェックを。
[コメント設定]
ここは一通り全項目チェックして自分の設定に。初期ではコメント確認画面にチェックが入っていると思うので要らない場合はチェックを外しておきます。
[トラックバック設定]
初期では事前承認にチェックが入っているので、即時公開したい場合は外しておきます。
[登録/認証]
初期では「認証なしコメント」にチェックが入っていないので誰でもコメントできるようにしたい場合はチェックを入れておきます。初期設定ではいくつかの認証にチェックが入っているので自分の設定に合わせて変更・調整しておきます。
[ウェブサービス]
TypeKey使う場合は忘れずに設定すませておくように。
コメント・トラックバック関係は他者とかかわる部分なので事前に(コメント・トラバを使うかどうかも含めて)方針をちゃんと決めて設定しておいた方がいいと思います。投稿画面の設定は後でいくらでも調整できるので後回しでOK。
2.余計なアーカイブを整理しておく
デフォルトではブログ記事リストには「カテゴリー」「月別カテゴリー」「月別」「ユーザー月別」の4つのアーカイブが用意されています。が、投稿するのは自分1人だけとはっきりしている場合、ユーザー月別アーカイブ、要りますか? 不要なアーカイブは事前に削除して余計な再構築をさせないようにしておきます。
デザイン>テンプレート>アーカイブテンプレート>ブログ記事リスト の下にあるアーカイブマッピングから「ユーザー月別」を削除します。これでアーカイブインデックスに余計なリンクが出現しなくなりますし、静的に動かしている場合もその分MTが軽くなると思います。
3.余計なフィードを整理しておく
デフォルトではAtom、RSD、RSSの3つが生成されるようになっていますが、こんなに要りますか? Atomだけでいいなら、余計なフィードは事前に整理しておきます。フィードを拾われた後で気がついて削除したら404エラーが増えてうっとうしくなるので。
まずはインデックステンプレートのAtom、RSD、RSSの中で使わないものから「インデックステンプレートを再構築するとき、このテンプレートも再構築する」のチェックを外します。不要なものは無駄に再構築させない。これ基本。
続いてモジュール>ヘッダーの中からフィードに関する記述を整理します。Atomだけでいいなら、以下の青字の部分を削除しておくとよいかと。
<MTIf name="main_template">
<link rel="alternate" type="application/atom+xml" title="Atom" href="<$MTLink template="atom"$>" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="<$MTLink template="rss"$>" />
</MTIf>
<MTIf name="main_index">
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="<$MTLink template="rsd"$>" />
</MTIf>
4.アーカイブマッピングをしておく
かつては必須項目でしたが(こちらを参照)、MT4ではプレビューの仕様も変わり、ブログのバックアップや複製機能も充実したので、今となっては必ずしも必要な項目ではなくなりました。が、いざという時のためにエクスポートデータだけで復元できる状態も残しておきたいもの。
MT4のアーカイブマッピングはデザイン>テンプレート>各テンプレートの下部、にあります。
テンプレート毎に設定できるので、慣れたら3.3よりも使いやすいです。どうマッピングするかは好みですが、ブログ記事はやっぱり日付でマッピングしておくのが都合いいです。IDでマッピングするのは変わる可能性があるので避けた方が無難。
*なお、4.01現在、拡張子を簡略形の%xにするとプレビューが出来なくなるバグがありますので、拡張子は「%x」ではなく「.html」と略さすに書くこと。
ちなみにダイナミック・パブリッシングの場合は拡張子をphpにする必要はありません。htmlのままでOKです。時々勘違いされることがあるようなので念のため。
ついでながら、カテゴリーを作るときは必ず出力ファイル名を設定しておくことをおすすめします。それをやっておかないとカテゴリ名が日本語の場合、ファイル名がcat1やcat5などになってしまい、catの後の番号がブログ移転時にずれる可能性があるからです。
5.mt-comments.cgiのリネーム
MT4ではコメント認証機能が充実してコメントスパムにそれほど気を使わなくてよくなりました。が、必ずしもコメントする人が皆何かの認証IDをもっているとは限りません。どころか、実際の運営現場では「認証って何?」な人の方が多かったりしませんか。認証IDなどに無縁な人が閲覧対象のほとんどだった場合、認証に関係なく、オープンに誰でもコメント可にしなければいけなくなります。が、それだと恰好のスパマーの餌食になってしまいます。キャプチャも使いたくない場合はスパム対策が必須になってきます。
スパマーに一番効果的なのはmt-comments.cgiのリネームです。スパム対策プラグインの類はスパムコメントを表に出さないようにしているだけで、CGIへの大量アクセスでMTに過度な負荷を生じさせる状態を改善してはくれません。ここはやっぱり直接mt-comments.cgiを叩かせないようにするのがMTにも優しくていいと思います。私のブログではコメント機能を使う・使わないにかかわらず、最低限でも以下の設定は全てのブログに行うようにしています。
1)サーバー上でmt-comments.cgiをリネームする
なるべく推測されにくい名前がいいかと。ここではhoge-comments.cgiにしたものとします。
2)mt-config.cgiに以下を追記する
システムにコメントCGIが変わったことを知らせるために以下の記述を追加しておきます。
CommentScript hoge-comments.cgi
ただし、これだけでは不十分です。このままではソースの中からリネーム後のコメントCGIを拾われ、再び攻撃される可能性があるので、ソースの中から完全にコメントCGIを除去してリネーム後の名前を知られないようにしておきます。それにはjavascriptを使うのが手っ取り早くて簡単です。
3)mt.jsに以下を追加
インデックステンプレートのmt.jsの最後に以下の記述を追加します。
function mtCm() {
document.comments_form.action = "<$MTCGIPath$><$MTCommentScript$>";
}
4)コメント入力フォームの修正
モジュールテンプレートの「コメント入力フォーム」のactionの中の青字の部分を削除し、</form>の下に赤字の部分を追加します。
<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" id="comments-form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
↓
<form method="post" action="" name="comments_form" id="comments-form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
</form>
<script type="text/javascript">mtCm();</script>
</div>
*これはOpen MagicVoxのJavaScriptを使ってスパムによるCGIの過負荷を防ぐを参考にアレンジさせていただいたものです。参考先ではコメントCGIを分けてソースに記入していますが、ここではコメントCGIはmt.jsの中に隠してしまって、ソースの中からは完全に除去する方法をとっています。
5)nofollowを使わない場合の修正
MT4はコメンターがURLを入れていた場合、「設定>コメント」でnofollowにチェックが入っていなければ、コメントCGIを介して相手サイトにリダイレクトする仕様になっています。そのためリダイレクトURLからもコメントCGIがバレてしまいます。nofollowを使わない場合は以下の例のようにMTCommentAuthorLinkにno_redirect="1"を追記してコメントCGIからリダイレクトされないようにしておきます。
<$MTCommentAuthorLink no_redirect="1"$>
*MTCommentAuthorLinkは4.0~4.1ではコメントの詳細モジュールに、4.2以降はコメントモジュール(4の修正と同じテンプレート)にあります。
*nofollowにチェックが入っている場合はリダイレクトは働かないので、この追記は必要ありません。
私の経験からでは効果は抜群です。MT4になってMT-Keystrokesが使えなくなった人にも差し当たりの代わりとして使えるかと。
6.mt-tb.cgiのリネーム
トラックバックもコメントと同じで、「リネーム&ソースから除去」でスパマーに直接トラバCGIを叩かせないようにします。トラバスパム対策に関してはこれまでもいろいろ書いてきましたが、ここではこれまでの経験から得られた集大成みたいな感じでまとめてみました。
1)サーバー上でmt-tb.cgiをリネームします
なるべく推測されにくい名前がいいかと。ここではhoge-tb.cgiにしたものとします。
ここでポイント。mt-tb.cgiの場合はmt-comments.cgiと違って、mt-config.cgiには何も追記しません。これは後述の<$MTEntryTrackbackData$>の削除漏れなどから、うっかりリネーム後のトラバCGIが漏れてしまうのを防ぐためです。
2)mt.jsに以下を追加
インデックステンプレートのmt.jsの最後に以下の記述を追加します。hoge-tb.cgiの部分はMTタグは使わず手書きで入れます。
function mtTb() {
document.write('<$MTCGIPath$>hoge-tb.cgi');
}
3)トラックバックの修正
モジュールテンプレートの「トラックバック」の中から<$MTEntryTrackbackLink$>を探し出して以下のように書き換えます。
<$MTEntryTrackbackLink$>
↓
<script type="text/javascript">mtTb();</script>/<$MTEntryTrackbackID$>
4)<$MTEntryTrackbackData$>を削除
全テンプレの中から<$MTEntryTrackbackData$>を探し出して漏れなく削除。これはmt-config.cgiへ(わざと)変更を追加していないので<$MTEntryTrackbackData$>が書き出すトラバURLが本来と違うものになるためです。これをそのままにしておくとスパマーにはダミーURLを教えて欺けることになりますが、正しいトラバ使用者に無用な混乱を与えかねないので(^^;。
ソース上からトラバCGIを除去する方法は他にもいろいろあるのですが、これが一番簡単な方法かと思います。スキルのある人はもっと高度な方法を工夫してどうぞ。
これでMT最大の敵・スパムを排除することができたので、安心してブログ公開に行けます。
7.サムネイルリストからのリンクをブログ記事にする
これはまあ好き好きですが。私はやっとくです。写真がメインなら直接写真に飛んでもいいんですが、記事がメインで写真はあくまでも記事の補佐、という場合は写真ではなく記事に飛んでくれた方がいいので。
8.スタイルキャッチャーを使う
デフォルトのままでもスタイルテーマが多数用意されているのだから、これを使わない手はない。
デザイン>スタイル と進んで「既定のスタイル」「MT4スタイルライブラリ」から好きなのを選んでレイアウト選んで「デザインを適用」をポチ。2カラムも3カラムもカラムの位置もMTが自動でやってくれるので簡単になりました。
9.文字とリンクくらいは変えておく
デフォルトでは文字が小さいのでちょっと変更。デザイン>テンプレート>インデックステンプレートからstyle.cssを開き、以下を追加。本格的なデザイン変更をする前の暫定的処置ですが、これだけでもけっこう実用性が増します。赤字の部分は好みのものを。
/* リンク */
a { color: #008000; }
a:hover { color: #FF3300; }
/* 本文の文字 */
.asset-content {
font-family: "MS Pゴシック", Arial, sans-serif;
font-size: 11pt;
color: #000000;
line-height: 1.3;
}
これで必要最低限のセッティングは終わったので、あとは時間ができたとき(大分先になりそうですが^^;)にゆっくりカスタマイズなり変更なりしていくです。
<2010.12.5> mt-comments.cgi のリネームの5)を修正。
コメント
おーたむ | 2007年10月22日 00:52
はじめまして。おーたむです。
今回MT4化するに辺り参考にさせていただいてます。
すみませんが、質問です。
「3)トラックバックの修正」の部分ですが、
mtTb();/">
とすると、value値が「<script type=」となるようで表示がおかしくなります。
TAKEOさんはどのようにされていますか?
現在は直接CGIの部分をテンプレートに書き込んでいます。
よろしければ教えてください。
おーたむ | 2007年10月22日 00:55
すみません。先ほどの質問部分を投稿しなおします。
「3)トラックバックの修正」の部分ですが、
<input ・・・・・ value="<script type="text/javascript">mtTb();</script>/<$MTEntryTrackbackID$>" /></p>
とすると、value値が「<script type=」となるようで表示がおかしくなります。
TAKEOさんはどのようにされていますか?
現在は直接CGIの部分をテンプレートに書き込んでいます。
よろしければ教えてください。
TAEKO | 2007年10月22日 11:04
こんにちは。
あ、これはvalue=""の中では使えないんですよ。MT4デフォルトのまま何もカスタマイズしていない場合向けなので。
そのためこちらでは絵文字変換スクリプトを(その場しのぎで)改造したものを使っているのですが、あまりスマートではないので(もっとスマートな方法があると思うのですが私が勉強不足で)公開できる状態には至ってないのが現状です(^^;。
それでもスマートでなくてもいいのなら、以下のようにしてみて下さい。
1)mt.jsに追加するスクリプトを以下の頁の「2.画像変換スクリプトの追加」のものに差し替える。
http://wing.w-museum.com/200610212103.html
2)赤字の '画像のアドレス' を '<$MTCGIPath$>hoge-tb.cgi' にする。
変換する単語は1つ一だけなので2行目は削除する。
3)画像タグに含める属性値(alt属性以外)を以下のようにする。
var att = '';
4)コメントにカスタマイズ絵文字入力機能:画像変換の(3)各コメントの class 属性を以下のようにする。
var commentbodyClassName = 'mttb';
5)一番下にあるfunction getStringCustmizeEmojiTagのjoin部分を以下のように変える。
s = s.split('[' + list[i][0] + ']').join(list[i][1]);
6)テンプレートの<div id="trackbacks"></div>内のトラバURLを記述する部分を
<div class="mttb"></div>で囲む。
7)value=""の中を以下のようにする。
value="[仮タグ名]/<$MTEntryTrackbackID$>"
8)<div class="mttb"></div>より下に以下を記述する。
<script type="text/javascript">changeCustmizeEmojiTag();</script>
ややこしくてすみません。おーたむさんの好きなように直してみて下さい。
おーたむ | 2007年10月22日 23:10
ありがとうございました。
無事できました。
きっと、value=""の中では使えないんだろうなーっと思いつつ、方法が浮かばなかったので助かりました。
関係ない話ですが、1カラムのデザイン素敵ですね。あまり1カラムは好きでなかったのですが、TAKEOさんのブログを見て、こんな感じなら作ってみてもいいかもっと思いました。
これからも色々参考にさせていただくと思いますのでよろしくお願いします。
TAEKO | 2007年10月22日 23:40
こんな説明でお分かりいただけたでしょうか。
本来は絵文字用なのを無理やり使っているので、トラバに使うならもっとシンプルに出来るはずと思うのですが、そのうち調べてみようと思います。
1カラムデザイン、いいですか? ありがとうございます。
自分にはこれが使いやすいので。
こちらこそこれからもよろしくお願い致します。
うみ | 2008年5月12日 10:17
はじめまして。
MT4.1をインストールするにあたって、こちらの情報を参考にさせていただきました。
「5.mt-comments.cgiのリネーム」の部分で質問をさせてください。
コメント投稿時に、[投稿]ボタンを押して何かしらのエラーが表示された場合(例えば、Captcha画像の入力ミスなど)、「コメントの登録エラー」画面で、入力フォームの内容が消えてしまいます。
ブラウザのエラー表示を確認すると、テンプレートに書いた、「</form>の下に書いたスクリプト」の部分でエラーが発生しています。
ちなみに、[確認]ボタンを押して、プレビュー表示をした時には、入力フォームの内容は維持されています。
エラーも発生しません。
また、「コメントの登録エラー」画面から、ブラウザの[戻る]ボタンで戻った時にも、入力フォームの内容は維持されています。(復活します。)
もし、何か心当たりなどありましたら教えていただけますでしょうか?
お手数をお掛けしますが、よろしくお願いいたします。
TAEKO | 2008年5月12日 14:48
>うみさん
コメントありがとうございます。
>「コメントの登録エラー」画面で、入力フォームの内容が消えてしまいます。
デフォルト状態で確認してみましたが、コメント登録エラー画面には入力フォームはありませんよね? デフォルトテンプレートならエラー画面には以下の記述しかないと思います。
コメント投稿エラー
コメントの投稿に失敗しました:
エラー内容
元のブログ記事に戻る
うみさんの使われているテンプレートはデフォルトのものでしょうか?
それとも「フォームの内容が消える」というのは「元のブログ記事に戻る」リンクをクリックして戻られた画面に内容が維持されていないということでしょうか。あるいはエラー画面にもフォームが表示されてほしいということでしょうか。
ご質問の意味を取り違えていましたら申し訳ありません。
うみ | 2008年5月12日 17:17
TAKEOさん、お世話になります。
さっそくのご返事、ありがとうございます。
情報不足と、紛らわしい書き方をしてしまってすみません。
テンプレートは、下記のサイトで配布されているものを使用しています。
http://www.koikikukan.com/syoeisya/book/mt/
仰るとおり、デフォルトテンプレートでは、エラー画面にフォームは表示されないのですが、
このテンプレートでは表示されるようになっています。
できれば、「エラー画面にもフォームが表示されてほしい」ということになります。
また、このテンプレートでは「戻る」のリンクは付いていないのですが、ブラウザの戻るボタンで戻ったときは、フォームの内容が維持されています。
デフォルトテンプレートではないので、TAKEOさんにお聞きするのは筋違いかもしれないですね。すみません。
TAKEOさんが思いつかれるようなアドバイスなどありましたら、教えていただけると嬉しいのですが…もし、エラー画面でのフォームの表示は想定していないので難しいということでしたら、テンプレートからフォームを削除して、デフォルトに近いデザインに変更しようと思います。
ご面倒をお掛けしますが、何かヒントなどありましたらご教示ください。
よろしくお願いいたします。m(__)m
TAEKO | 2008年5月12日 23:13
>うみさん
小粋空間さんのですね。テンプレートを落として調べてみたところ、システムテンプレートにmt.jsが読み込まれていないようです。
ヘッダーモジュールの</head>の上に以下を追加してみて下さい。
<MTIf name="system_template">
<MTIf name="body_class" eq="mt-comment-error">
<script type="text/javascript" src="<$MTLink template="javascript"$>"></script>
</MTIf>
</MTIf>
これで「コメントの登録エラー」にのみmt.jsが読み込まれるようになると思います。
これで試してみて上手くいかなかったらまたご連絡下さい。
うみ | 2008年5月13日 02:25
テンプレートの確認までしていただき、ありがとうございます。ご面倒をおかけします。
教えていただいた記述を追加しましたが、フォームの内容は消えてしまいます。
エラーページのソースを見ると、ヘッダー部に、以下のとおりmt.js 読み込みの内容は追加されています。
<script type="text/javascript" src="ブログURL/mt.js"></script>
「プレビューページ」と、「エラーページ」のソースを確認してみると、<body>タグに、
onload="individualArchivesOnLoad(commenter_name)"
この記述が、「プレビューページ」有り、「エラーページ」無し、となっていました。
何か関係はありますでしょうか?
他にも何か確認するような部分がありましたら、教えてください。
よろしくお願いします。
TAEKO | 2008年5月13日 09:43
>うみさん
あ~それもありましたね。
コメント完了テンプレート25行目<MTIf name="body_class" eq="mt-comment-error">の下に以下を追加してみて下さい。
<MTSetVar name="body_onload" value="individualArchivesOnLoad(commenter_name)">
これでどうでしょうか。
うみ | 2008年5月13日 10:20
ソースには、
onload="individualArchivesOnLoad(commenter_name)"
が正しく追加されましたが…
フォームの内容はやっぱり消えてしまいますね。
なかなか、難しいことのようですね。
こんなご相談してしまって、ほんとにすみません。m(__)m
TAEKO | 2008年5月13日 22:53
>うみさん
そうですか…。
問題を切り分けるために一度、何もカスタマイズしない状態(小粋空間さんのテンプレートに何も手を加えていない状態)でコメント登録エラーの時、フォームの内容が維持されているかどうか確認してみて下さい。
うみ | 2008年5月15日 08:44
テンプレートの初期状態で確認してみました。
何も手を加えない状態でも、フォームの内容は消えてしまいますね。
こうなると、TAKEOさんにご相談するのはホントに筋違いですよね。一番最初に、初期状態で確認しておけばよかったですね。ホントにすみません。m(__)m
考えを変えて、コメント登録エラー画面のフォームは表示させない方向で、テンプレートの修正をしようと思います。
いろいろお手数をお掛けしてしまって申し訳ありませんでした。
これまでのアドバイスありがとうございました。
TAEKO | 2008年5月15日 20:12
>うみさん
こちらこそお手数かけさせてしまい、すみませんでした。
フォームを表示させないのなら、ヘッダーモジュールにもコメント完了テンプレートにも何も追加しなくていいですから、それが一番簡単な対処法かと思います。
フォームの内容が維持されない件は小粋空間さんにフィードバックされるといいと思います。
あれからもう少し調べて原因分かったと思うんですが、ちょっと複雑な修正が必要になってくるので、これ以上は作者様にお願いした方がいいと思うので。
よろしくです。
aru | 2010年2月23日 13:49
TAEKOさんはじままして。
とっても今更ながら少しお伺いさせて下さい。
これはMTOS5.01のバージョンにも使えますか?
全ての工程後再構築しコメントテストすると
エラー: 不正な要求です。が表示されます。
jsファイルの名前を変えているのでいったんmt.jsに戻してみたんですがやはりエラーです。
ファイル名を変更していただけで中身は初期のまま勝手に弄ったりしていない状態です。
単純にどこか間違えているのか、もしかしてMTOSでは無理なのかなと思ってみたりもしてます。
自分で色々テストしてみればいいのですが私の利用しているXREAは
恐ろしく重くjsファイルを開く度に固まってしまうので書かせて頂きました。
TAEKO | 2010年2月24日 10:54
>aruさん
こちらこそはじめまして。
コメントスパム対策の項に関してのご質問でしょうか?
MT(OS)5はまだ触っていないので何とも言えないのですが、MT4時代のテンプレート、または完全オリジナルのテンプレートならMT5でも使えるのではと思います。要はコメント用のjavascriptとの兼ね合いなので。
私に時間があればMT5をインストールして調べることも出来るのですが、あいにくと今は多忙でそこまでの時間がとれなくて…。どなたかjavascriptに詳しい方にMT5用のmt.jsの内容を見てもらえれば何か分かるかもしれません。お役に立てず申し訳ありません。
keizo | 2010年12月 4日 11:30
こんにちは。
お尋ねしたくてコメントさせていただきました。
5のmt-comments.cgiのリネームについてなのですが、【コメント詳細の修正】の修正すべきファイル名が判りません。私は MovableType 4.261 を使用しております。
勝手なお願いですが、よろしくお願いいたします。
TAEKO | 2010年12月 5日 00:29
こんにちは。
この記事を書いたのは2007年10月なので、4.0時代のものですね。
思いだして確認してみたところ、4.2の時にテンプレートの構成が少し変わってます。
4.0で細かくモジュール化されたのが、4.2では改良?されてモジュールが減り、コメントの詳細はコメントモジュールの中に入りました。
ですので、テンプレートモジュールのコメントの中にあるんですが(4の修正を行うのと同じテンプレート)、4.2では管理画面の「設定>コメント」でnofollowにチェックが入っているとリダイレクトしない仕様になっているようです。4.0の時からそうだったのか4.2になってから変わったのかは4.0の環境がないので分かりませんが、4.261ならnofollowにチェックが入っていれば追記する必要はないでしょう。
なお、no_redirect="1"はMTCommentAuthorLinkのモディファイアです。nofollowを使わない場合はMTCommentAuthorLinkに入れて下さい。
keizo | 2010年12月 5日 09:06
TAEKO さん、なるほどそういうことだったんですか。よく判りました。nofollow にチェックが入っていたので、その設定は無しでやってみます。ありがとうございました。
TAEKO | 2010年12月 5日 21:51
管理画面のテンプレートを調べてみたら、4.0から管理画面でnofollowをチェック出来るようになっていたようです。でも4.0にした時はリダイレクトとnofollowの関係まで気が付いてなくて、nofollowを外した状態の時にリネームの動作確認してたみたいです(^^;。
それを踏まえて4-5)を少し修正しておきました。
keizo | 2010年12月 6日 11:54
>nofollowを外した状態の時にリネームの動作確認
上記はしていないですが、今のところ効果抜群です。ありがとうございました。
TAEKO | 2010年12月 7日 00:45
あ、前回のコメントは、私がリダイレクトとnofollowの連動に気付いてなかったという意味です。分かりにくくてすみません。
思えばこのリネームカスタマイズをしてからもう3年になるんですね。あれからスパムとは全く縁がないので、本当に効果あるんだと思います。これからもよろしくお願い致します。