再構築時の500エラーを解消する
昨日より爆発的(?)に広がってる話題に便乗してご紹介を。
エントリーが増えてくると再構築(エントリーの新規投稿含む)で500エラーが発生する話をよく耳にします。どうやら BerkeleyDB を使用している場合に発生するようで、その原因に db ディレクトリに配置される fileinfo.db の肥大化(10MByte以上とか)が挙げられていました。このファイルにはサイトに配置されているファイル情報等が記録されており再構築時にこのファイルが更新されますが、冗長なファイル情報が残ってしまうみたいです。
肥大化の技術的な原因はogawaさんの言葉を引用させて頂くと、すでにある fileinfo.db を remove してから(データを)追加すべき処理で、
- remove してもその分の BerkeleyDB の空き領域が開放されない
- remove しているがうまく削除できていない
ということで、この両方の相乗効果でサイズが肥大化しているようです。
以下参照および関連記事です。ありがとうございました。
参照記事
Magic White:500エラーと投稿時遅延解消法/500エラーと投稿時遅延解消法その2
我楽:新規エントリー投稿時に500エラー。(泣)
上記から参照している元記事
TITO's Web Page:Movable Type「fileinfo.db」の肥大化
リンクサイトで対処された方々(不足ご容赦ください)
V.J.Catkick@:fileinfo.db を削除する
やむやむ:「fileinfo.db」 のスリム化
体験手記レポート部:エントリー投稿時に500エラーが出るのをどうにかする方法
対処については当初「fileinfo.db を手動削除」という手段(バックアップ要保存)が出回ってましたが、 Ogawa::Memoranda さんが削除用スクリプト(下記)を速攻で作成くださいました。個人的にはこちらのスクリプトを使用されることを推奨します(2004.11.30 プラグイン化されております)。
対処用スクリプト
Ogawa::Memoranda:mt-shrinkfinfo.cgi
![]() |
追記:fileinfo.db のサイズを管理画面に表示する方法を
に掲載しました。
2004.11.30 追記
プラグインが提供されまして、管理画面からのクリックで実行できるようになりました。設定方法を簡単に記しておきます。詳細は先のリンクまたはMagic White:mt-shrinkfinfo.cgiがプラグインに。を参照ください。
- mt.cfg の DataSource を相対パスから絶対パスに修正。
- ShrinkFInfo.zipをダウンロード、解凍。
- 解凍した「ShrinkFInfo」をフォルダごと plugins フォルダ内に配置(レンタルサーバの場合、パーミッションの設定がありますのでご注意ください)。
設定は以上です。管理画面にを開くとShrinkFInfo Plugin が表示されているはずですので、そこをクリックすればCGIが実行されます。
2004.12.11 追記
fileinfo.db のサイズを表示する方法を追記しました。
コメント投稿時のPerlエラーを解消する
私のウェブログは自宅サーバで運用しています。OSは Windows XP です。
で、当初はそれほどでもなかった(というか皆無)Perlのエラーダイアログが、3.11にアップグレードした辺りから画面に5?10枚/日ほど表示されるようになりました。どうもコメント投稿等やエントリー投稿が引き金になっているようです。自分のPCでコメントを投稿しても発生します。またコメント投稿等も正常終了しない(応答が返ってこない)ことがしばしばありました。そのまま放っておくとコメントが二重投稿されてしまうケースもあるようで投稿された方には大変ご迷惑をおかけ致しました。
時間が経過してもいっこうに回復する気配もない(というか待ってて直るはずもない)ので、さすがに困りました。サイトを検索してもそれらしき情報がみつかりません。Perlのバージョンを入れ替えようか、または Movable Type を新規インストールにしようかと策を講じておりました。
が、しつこくサイトを検索していたところようやく下記の記事にたどり着きました。
対処は mt.cfg に下記の1行を追加するというものです。
LaunchBackgroundTasks 0
記事と私の事象は微妙に異なるようですが、「WindowsのPerlでは対応していない機能がある」という文言になんとなくピンときて(笑)、この設定を行ってみることにしました。デフォルトの mt.cfg ではこの値に関する記述はありませんので(追記:記述がないのは 3.0D の mt.cfg です)ファイルの一番下にちょろっと追加。ちなみにこのオプションについては
の下から6番目に説明があります。下記は該当部分の抜粋です。
LaunchBackgroundTasks
タスクの中には、デフォルトで、バックグラウンドで実行されているものもあります。 この仕組みによって、Movable Typeがたとえば再構築など重要なタスクを実行している間、ユーザーや別のソフトウエアはアプリケーションを継続して使うことができます。 ただしこの機能はホスティング環境によっては機能しないこともあります。 効果のない機能がある場合は、LaunchBackgroundTasks 0 を設定してみてください。
具体的な原因は「(Movable Typeが使用する)PerlIS.DLL がfork関数に対応していない(実装されていない)ためにエラーが発生する」ということらしいです。forkというのは簡単に申しますと、いくつかのプログラムを同時に走らせるためのもので、同時に走らせることで処理を早く終わらせられます。ちなみにforkを行っているのは
- lib/MT/Util.pm
の1000行目辺りにある、下記関数の青字部分1ヶ所だけです。
sub start_background_task {
my ($func) = @_;
if (!launch_background_tasks()) { $func->() }
else {
$| = 1; # Flush open filehandles
my $pid = fork();
if (!$pid) {
# child
close STDIN; open STDIN, "</dev/null";
close STDOUT; open STDOUT, ">/dev/null";
MT::Object->driver->init();
$func->();
CORE::exit(0) if defined($pid) && !$pid;
} else {
MT::Object->driver->init();
}
}
}
この対処を実施してからすでに1週間以上経つのですが、エラーは発生しなくなりました。コメントも(やや時間がかかりますが)正常終了します。その代償として新規エントリーの投稿にえらく時間がかかりようになりました(笑)。おそらく並列処理をやめて直列で処理を行っている分、時間がプラスされたのでしょう。コメント投稿も完了するまでに数十秒ほどかかるようです。申し訳ございませんが気長にお待ちになってやってください。
追記:本事象は3.0Dからのアップグレードによるものでした。動作が変化した原因につきましては(o)さんから頂いたコメントを参照ください。
個別エントリーアーカイブでの文字化けの原因
個別エントリーアーカイブでのコメント投稿後やTypeKey認証後の文字化けを解消する記事をこちらに投稿しましたが、Daily noteさんのアドバイスより「『続きを読む』を折りたたむスクリプトを入れると文字化けする」とのことで(確認&ご連絡ありがとうございました)、早速試験サイトで試してみました。
実験結果は、試験サイトでも「続きを読む」がある記事へコメントを投稿すると100%文字化けしました。さらに続きを読むの部分(HTML/JavaScript)を色々切り分けた結果、JavaScriptの ShowHide 関数
function showHide(entryID, entryLink, htmlObj) {
extTextDivID = ('Text' + (entryID));
extLinkDivID = ('Link' + (entryID));
if( document.getElementById ) {
if( document.getElementById(extTextDivID).style.display ) {
if( entryLink != 0 ) {
document.getElementById(extTextDivID).style.display = "block";
document.getElementById(extLinkDivID).style.display = "none";
htmlObj.blur();
} else {
document.getElementById(extTextDivID).style.display = "none";
document.getElementById(extLinkDivID).style.display = "block";
}
} else {
location.href = entryLink;
return true;
}
} else {
location.href = entryLink;
return true;
}
}
この中の赤色部分
document.getElementById(extTextDivID).style.display
の記述で文字化けが発生しているようです(この行と下の同じような記述を削除すると発生しませんでした)。さらに厳密に言うと、
document.getElementById(extTextDivID).style
で発生します。つまりHTMLのstyle属性を参照するところで文字化けを引き起こしています(getElementById までであれば発生しません)。このJavaScriptは「続きを読む」をクリックしないと起動されない(onclick属性で起動)スクリプトなのですが、投稿後のレンダリング時点で文字化けを発生させます。
なお根本的な解決案は現在のところ見つかっておりません(ということで先の対処が生まれました)。個別アーカイブに「続きを読む」をご利用の方にはご迷惑おかけ致しまして大変申し訳ございません。この場をお借りしてお詫び申し上げます。m(__)m
フレーム利用時に表示がずれる不具合を解消する
![]() |
対処としてはウェブログを表示する frame タグに scrolling 属性(青色部分)を付与すると解消します。この属性を付与することで解消するということはフレームにした場合、レンダリングでスクロールバーの存在を適正に認識できていないことが原因と考えられます。
<frame src="http://~/" scrolling="yes">
scrolling 属性には
- yes:常に表示
- no:常に非表示
- auto:自動
の3種類があります。「no」は対象外として、正常にレンダリングされるのは「yes」のみです。「auto」はデフォルト値のため、記述しても設定しない場合と同じ効果しか得られません。なお「yes」に設定するためスクロールが不要な場合もスクロールバーエリアが表示されます。予めご容赦ください。
.htaccessによる文字化け対策
TypeKey認証やコメント投稿の後で文字化けが発生するという質問を最近何件か頂いています。TypeKeyの文字化けについてはHTTPリダイレクトを伴っており、ページ直前のHTTPレスポンスで返却されたcharsetを見てしまうのが文字化けの要因と思われます(発生するサイトとしないサイトの違いは不明です)。下記のサイトに解説があります。
ただしコメント投稿後の文字化けは原因不明(リダイレクトではないという認識)です。
上記のサイトにも少し書かれていますが、リダイレクトによる文字化け解消について .htaccess を利用する方法がありましたのでご紹介します。
1..htaccess ファイル作成
まず .htaccess というファイルをテキストエディタ等で新たに作成し(既に存在する場合はその中)、そこに下記のいずれかの青字部分を記述します(とりあえず上の方をお試しください)。記述例は文字コードが UTF-8 でファイルの拡張子が .html の場合です。
明示的に文字セットを指定していない応答に追加されるデフォルトの文字セット
AddDefaultCharset UTF-8
ファイル名の拡張子を指定されたコンテントタイプにマップ
AddType "text/html; charset=UTF-8" .html
上の設定はHTTPヘッダで charset が設定されていない時に文字コードを指定するものです。
下の設定は拡張子に対応するコンテントタイプ(MIMEタイプ)の設定が目的です。phpファイルも対象に含む場合は
AddType "text/html; charset=UTF-8" .html .php
としてください(拡張子の間は半角空白、拡張子のピリオドはなくてもいいようです)。
記述した行の最後は改行してください。文字コードの部分は「EUC-JP」「Shift_JIS」等、使用されている文字コードに適宜修正ください。
技術的な話をすると、上記はいずれも Apache ディレクティブですのでHTTPサーバに Apache が使われていることが前提になります(多分この文章は無視されても大丈夫だと思います…)。
2.ファイル配置
.htaccess を配置(アップロード)します。このファイルの内容は、ファイルを配置したディレクトリおよびそのサブディレクトリ全てに適用されますので(サイトのトップディレクトリにあると思われる)index.htmlが配置されているディレクトリに配置します。
以上です。なお上記の対策は動作を確認できてないこともあり、完全な不具合解消を保証するものではありませんので予めご了承ください。また本設定がコメント投稿後のページ表示にも適用されればいいのですが(CGIからの出力は一旦HTTPアクセスが行われると思っているので適用されそう?)、そうでなければカスタマイズされたページのどこかに文字化けの要因が潜んでいると考えられます(感覚的にはHTMLタグの文法エラー等ですが改善性については未知です)ので、申し訳ございませんが「デフォルトのテンプレートから少しずつカスタマイズして動作をチェックしてみてください」という原始的なアドバイスしかできません。併せてご了承願います。
↑一応動作確認できているサイトあります。なお文字化けの原因は「続きを読む」を折りたたむスクリプトにあるようでした。ご利用中の方にはご迷惑おかけして大変申し訳ございません。とり急ぎお詫びまで。
MTIfNonZeroタグでコメント表示方法を制御する
個別エントリーアーカイブの中で、「トラックバック数が0件でなければトラックバックを表示する」ために利用する
- MTIfNonZero
というタグが使われています。このタグを使うとちょっとした条件分岐ができ、ページへの表示を制御することができます。
参照サイトは下記です。ありがとうございました。
このエントリーでは MTIfNonZero タグを利用して、コメント投稿数が0件の時に
- 個別エントリーアーカイブの「コメント」タイトルを表示しない
- 個別エントリーアーカイブの「コメント」タイトル下に「コメントがありません」という表示をする
の2通りの方法を紹介します。私のサイトは下の方法でカスタマイズしてみました。
「コメント」タイトルを表示しない
個別エントリーアーカイブテンプレートの下記の部分に青色のタグを挿入すれば、コメントが0件の場合にコメントのタイトルを非表示にすることができます。</MTIfNonZero> の挿入位置は「コメント」と書かれた次の行でも問題ないと思いますが、コメント表示タグ全体を括らないのはスッキリしないので個人的には下記を推奨します。
:
<MTEntryIfAllowComments>
<MTIfNonZero tag="MTEntryCommentCount">
<div id="comments" class="comments-head"><a name="comments"></a>コメント</div>
<MTComments>
<a name="<$MTCommentID$>"></a>
<div id="c<$MTCommentID$>" class="comments-body">
<$MTCommentBody$>
<div class="comments-post">Posted by <$MTCommentAuthorLink default_name="Anonymous" spam_protect="1"$> <MTCommentAuthorIdentity> at <$MTCommentDate$></div>
</div>
</MTComments>
</MTIfNonZero>
<MTEntryIfCommentsOpen>
:
意味的には、MTIfNonZero の tag属性 MTEntryCommentCount(=エントリーのコメント数)が0でなければ <MTIfNonZero>~</MTIfNonZero> で囲まれた部分を表示(厳密には有効に)する、というものです。
「コメント」タイトル下に「コメントがありません」という表示をする
上記同様、青色のタグを該当位置に挿入すれば、コメントが0件の場合にコメントのタイトル下に「コメントがありません。」というメッセージを表示することができます。タイトルはいずれの場合も表示するので MTIfNonZero タグの中に入れないようにします。divタグは公開テンプレート用に併せて書いてありますので適宜変更してください。
:
<MTEntryIfAllowComments>
<div id="comments" class="comments-head"><a name="comments"></a>コメント</div>
<MTIfNonZero tag="MTEntryCommentCount">
<MTComments>
<a name="<$MTCommentID$>"></a>
<div id="c<$MTCommentID$>" class="comments-body">
<$MTCommentBody$>
<div class="comments-post">Posted by <$MTCommentAuthorLink default_name="Anonymous" spam_protect="1"$> <MTCommentAuthorIdentity> at <$MTCommentDate$></div>
</div>
</MTComments>
<MTElse>
<div class="comments-body">コメントはまだありません。</div>
</MTElse>
</MTIfNonZero>
<MTEntryIfCommentsOpen>
:
この処理をおおざっぱに書くと
<MTIfNonZero tag="MTEntryCommentCount">
:
コメントが0件でない時の処理を記述
:
<MTElse>
:
コメントが0件の時の処理を記述
:
</MTElse>
</MTIfNonZero>
という感じになります。MTElse というタグは MTIfNonZero の条件にマッチしなかった場合のものを有効にするためのタグです。
コメントのリンクを新しいウィンドウで表示する
Movable Type のコメントに挿入するHTMLタグはサニタイジングの関係で使用が制限されています。デフォルトで使用可能なタグ(属性含む)は
- a href、b、br、p、strong、em、ul、li、blockquote
です。つまり a タグで許容されている属性は href のみですので、target 属性を付与しても Movable Type が自動的に target 属性を削除するため別ウィンドウで表示することはできません。
下記に target 属性を有効にするための変更方法を記します。なおこの機能を利用する場合の注意事項として、コメントのリンクを有効にする方法は
- http://? を直接コメントとして記述したものに自動的にリンク(=aタグ)を付与する
- <a href="http://?" target="_blank">~</a>を手入力してリンクする
の2通りがありますが、両者は排他的ですのでいずれかの機能しか有効にできません。
![]() |
1.の場合
1.1 target 属性を許可する(方法その1)
![]() |
- a href,a href target,b,br/,p,strong,em,ul,li,blockquote
1.2 target 属性を許可する(方法その2)
mt.cfgの358行目の下記の部分を変更する変更前
# GlobalSanitizeSpec br/,p
変更後(先頭の"#"および半角空白を削除)
GlobalSanitizeSpec a href,a href target,b,br/,p,strong,em,ul,li,blockquote
カスタマイズはどちらか一方で大丈夫です。なおいずれの方法も他のタグを事前に追加されている場合は引き継いでください(上記はデフォルトの設定に target 属性を追加しているだけです)。
・リンクに target 属性を自動付与する
上記のいずれかの対処に加え、
- lib/MT/Util.pm
の500行目辺りにある下記の関数に青色部分を追加してください。
これでコメント内の http://? と書かれたURLにtarget属性付きのリンクが自動で付与されます。
sub munge_comment {
my($text, $blog) = @_;
unless ($blog->allow_comment_html) {
$text = remove_html($text);
if ($blog->autolink_urls) {
$text =~ s!(http://\S+)!<a href="$1" target="_blank">$1</a>!g;
}
}
$text;
}
2.の場合
1項の「target属性を有効にする」のいずれかを実施すれば、コメント内に記述した a タグの target 属性指定が有効になります。なお1の「target 属性を自動付与する」を実施しても自動付与はされませんので、手入力で target 属性を指定してください。コメント・プレビュー画面の typo 修正
やむやむ:さえらさんから頂いたご質問の対処です(素晴らしい校正スキルに感謝します!)
コメントでHTMLを利用可能にしている場合、個別エントリーアーカイブのコメント欄に
- コメント: (書式を変更するような一部のHTMLタグを使うことができます)
と表示されますが、コメント・プレビュー画面およびコメント・エラー画面では
- コメント: (スタイル用の HTLM タグが使えます)
と、明らかな typo が存在します。これを修正する方法ですが、
- lib/MT/L10N/ja.pm
の1314行目の赤字部分
'(You may use HTML tags for style)' => '(スタイル用の HTLM タグが使えます)',
を(書くまでもありませんが)青色
'(You may use HTML tags for style)' => '(スタイル用の HTML タグが使えます)',
に修正します。いっそ個別エントリーアーカイブと表示内容を揃えた方が良いかも知れません。
レンタルサーバの方は該当ファイルを一旦PCのローカルファイルとしてダウンロードし修正(保存時の文字コードにお気をつけください)、再度アップロードという手順です。再構築は不要です。
日本語化に関する情報はこのファイルに集約されています。
コメント欄とトラックバック欄にメッセージ追加
![]() 個別アーカイブのコメント投稿欄の下とトラックバックURLの下にメッセージを追加しました。他の方のサイトでもコメント投稿についての説明を結構みかけるので、私もそれに倣ってみました。 メッセージは投稿・送信時の注意点を記してますが、目的は重複に対して「気にしなくていいですよ」という内容です。またトラックバックは「タイムアウト=送信先に届いていない」と思われている方が少なくないので、以前のタイムアウト記事へのリンクも追加してみました。記載内容は運用状況によって適宜変更したいと思います。 批判的なコメントやトラックバックはほとんどゼロで、おかげさまでウェブログを楽しく運営させて頂いてます。そういった意味ではコメントやトラックバックの重複は全く問題でなく、消去するのもたいした手間ではございませんので(投稿者の方は気になるかも知れませんが)、どしどしお送りください。 |
個別エントリーアーカイブにコメント・トラックバックのアンカー追加
当サイトのメインページ記事下にある「Comments」「Trackbacks」のリンクに対応する個別エントリーアーカイブ内のアンカータグが欠落していましたので追加しました。
:
<MTEntryIfAllowPings>
<a id="trackbacks" name="trackbacks"></a>
:
<MTEntryIfAllowComments>
<div id="comments" class="comments-head">
<a id="comments" name="comments"></a>
コメント
</div>
:
これで対応する位置へジャンプするようになりました。なお公開テンプレートには影響ありませんは別途修正致します(初期のものを除く)。自分の使っているテンプレートが未整理な証拠です。
(お勉強モード)先のタグはメインページ・カテゴリーアーカイブページ・日付アーカイブページの下記の青色部分に対応しています。
:
<MTEntryIfAllowComments>
| <a href="<$MTEntryPermalink archive_type="Individual"$>#comments">Comments</a> [<$MTEntryCommentCount$>]
</MTEntryIfAllowComments>
<MTEntryIfAllowPings>
| <a href="<$MTEntryPermalink archive_type="Individual"$>#trackbacks">Trackbacks</a> [<$MTEntryTrackbackCount$>]
</MTEntryIfAllowPings>
:
期待通りにジャンプしない場合はこの対応が誤っている可能性があります。なおページが指定位置までスクロールできない場合もトップや中途半端な位置にジャンプします。
参考までに、公開テンプレートのメインページ・カテゴリーアーカイブページ・日付アーカイブページからの個別エントリーアーカイブページへの各リンク動作は下記のようになっています(多分)。
メインページ・アーカイブページ(カテゴリー・日別) | 個別エントリーアーカイブページのジャンプ先 |
記事下の時間 | トップへ |
記事下のComments | 「コメント」へ |
記事下のTrackbacks | 「トラックバック」へ |
サイドメニュー・RecentCommentsの記事名 | トップへ |
サイドメニュー・RecentCommentsの記事に対する投稿者 | 該当コメント位置へ |
追記
我楽さんからのアドバイスでXHTMLの記法に準拠し、id属性を追加しました。ありがとうございました。
Movable Typeで保存したエントリーをすぐに確認する方法
投稿したエントリーがどのようにページに反映されたか確認する時、私は管理メニューの「サイトの確認」をクリックしてウェブログのトップページにジャンプします(別のブラウザでウェブログを開いておいて更新、という時もあります)。
新しいエントリーはそれで問題ないのですが、古い記事を修正した時は該当のページまで辿っていくのが結構大変です。
つまり、
- 「エントリーを保存したらすぐに該当ページを表示できないだろうか?」
という不満が常々あったのですが、バージョン3.11で改善されていました。
新規エントリーであれば保存後の編集画面右上、投稿済みのエントリーであれば編集画面右上に「エントリーの確認」というリンクが追加されています。
リンクをクリックすると(デフォルトの設定であれば)個別アーカイブにジャンプします。いきなり便利になりました。
「もしかして3.01もあったのか?」と思い、念のため確認したところ何も出てきませんでした。
いや?、全く気がついていませんでした…(灯台もと暗し、みたいな)。
Feed Validator警告除去(Onclick属性削除プラグイン)
![]() |
![]() |
![]() 先のValidationサービスでRSS1.0(index.rdf)、RSS2.0(index.xml)、Atom(atom.xml)のURLを入力して「Validate」をクリックすれば自動的に正常性を検証してくれます。「RSS」や「Atom」のバナーを貼りつけているサイトは、それぞれのページがValidationサ?ビスでValid(妥当な)となった証として表示されている訳です。 ちなみに同じページのRSSフィード(1.0/2.0)はValidでした。RSSでも同様の事象が発生するらしいのですが、これはMovable Typeが用意しているAtom用テンプレートがcontent要素を用いて記事をCDATAとして全て引き込んでいるためでしょう(RSS用デフォルトテンプレートにはcontent要素が付与されていません)。 |
話を戻しまして、先の警告について検索すると下記のサイトで対処プラグインを1ヶ月ほど前に公開されておりまして、早速インストールさせて頂きました。ありがとうございました。
このプラグインは指定のタグで挟まれた箇所のonclick属性およびonkeypress属性を削除してくれます。
以下記事を引用させて頂いてのインストールおよび設定手順メモです。詳細につきましては上記サイトを参照ください。
- 先のサイトより「Onclick 属性削除プラグイン」をダウンロード
- アーカイブを解凍してその中の removeonclick.pl を plugins フォルダに配置
- 「Atomフィード」テンプレート(3.01はAtom Index)の編集画面で青色部分のタグを追加
:
<content type="text/html" mode="escaped" xml:lang="<$MTDefaultLanguage$>" xml:base="<$MTBlogURL encode_xml="1"$>">
<MTCRemoveOnclick>
<$MTEntryBody encode_xml="1"$>
<$MTEntryMore encode_xml="1"$>
</MTCRemoveOnclick>
</content>
:
- 保存・再構築
TypeKeyの使い方
TypeKeyはシックス・アパートのサービスのひとつで、ウェブログにコメントする時に利用するIDです。TypeKeyを利用することでウェブログはコメントスパムを防止することが可能になります(現実にはコメント投稿の利便性を考慮しているサイトが多く、結果的に完全な防止には至らないようです)。
すでにあちこちのサイトで書かれているようですが、このエントリーではTypeKeyについて
- アカウント取得
- TypeKey認証によるコメント投稿が可能なサイトにする
- TypeKey認証によるコメント投稿
の3つの項目に分けて記します。なお機能を完全に把握できている訳ではございませんので認識誤り等ございましたら予めご了承ください。
TypeKeyアカウント取得
TypeKeyを利用する人が共通して行う作業として「TypeKeyアカウントの取得」があります。
TypeKeyウェブサイトのTypeKeyへのよくある質問に「Type Keyアカウントの取得方法」が掲載されておりますので参照ください。TypeKeyの登録は無料です。
TypeKey認証によるコメント投稿が可能なサイトにする
![]() |
TypeKey認証によるコメント投稿
Movable Typeを用いたウェブログ(注:TypeKeyは他のアプリケーションでも利用可能みたいです)で個別エントリーアーカイブのコメント入力欄の上に
- TypeKey ID を使って サイン・イン してください。
とあるのをよく見かけると思います。これを利用することでTypekey認証によるコメント投稿が可能になります。TypeKey認証を行えば名前・メールアドレスの入力は不要です。この表示がないサイトはTypeKey認証によるコメント投稿を利用していないか、管理画面でTypeKey設定を行っていても(多分)3.0以前のバージョンの個別エントリーアーカイブテンプレートを用いているためページに反映されていない可能性があります。
![]() |
TypeKeyアカウントを取得されているのであればログイン画面からログインすることでコメント画面に戻り、先の表示が
- サイン・インを確認しました、hogehoge. さん。コメントしてください。 (サイン・アウト)
に変わります。これでTypeKey認証されましたのでコメントを投稿します。投稿したコメントの投稿者欄にはTypeKeyによる投稿を行ったコメンターマークが表示されます。TypeKey認証を終了する場合は上記の「サイン・アウト」をクリックします。
![]() |
![]() |
アップグレードと新規インストールの差分について
たいした話ではありません。Movable Type 3.11-ja アップグレードの最後の方で書きましたが、アップグレードした場合と新規インストールした場合で管理メニュー「テンプレート」の中の「テンプレートの名前」に差分があることに気がつきましたので追記しておきます。なおアップグレードは3.01からの場合のみですので、他のバージョンからのケースについては適用されないという認識です。新規インストールの場合 アップグレードの場合 メインページ Main Index スタイルシート Stylesheet カテゴリー・アーカイブ Category Archive 日付アーカイブ Date-Based Archive 個別エントリーアーカイブ Individual Entry Archive
それから新規インストールでは「Remember Me」というテンプレートモジュールがデフォルトで存在しますが、アップグレードでは存在致しません(これまで新規インストールでしか動作確認をしていなかったので気がつきませんでした)。具体的には個別エントリーアーカイブのJavaScript(cookie関連処理)が
<MTInclude module="Remember Me">
というタグに置き換わっており、下記の Remember Me というテンプレートモジュールをインクルードしています。
Remember Me
Movable Type 3.11-ja アップグレード
周囲の方が次々と3.11になる中、しばらくこのままかと思っていましたが手がすべってやっちゃいました。ということで改めて下記参照させて頂きました。
ここでの内容は上記と変わりませんが自宅サーバ用のアップグレード手順ということで。
1.ダウンロード
Six Apart.よりアップグレード用のパッケージ(ダウンロード画面直前でフルインストールかアップグレードかを決めます)をダウンロードし、解凍します。
2.アップグレード前処理
解凍した中の下記のディレクトリまたはファイルをそれぞれ現在のトップディレクトリにコピーします。大半が上書きされます。なお赤字のものはコピー対象外にしました(配下のファイルを変更または追加しており元の情報が上書きされてしまうため)。
- docs/
- extlib/
- images/
- lib/
- php/
- plugins/
- schemas/
- search_templates/
- tmpl/
- tools/
- mt.js
- styles.css
- mt-upgrade31.cgi
他にごちゃごちゃあるファイルはコピーする必要はありません。plugins はプラグインを何も加えていない場合、また search_templates は配下のファイルを変更していなければコピーに加えてください。
上書きにならない、つまり新規ディレクトリおよび新規ファイルは、
- php/
- mt-upgrade31.cgi
の2つです。なお正規のアップグレード手順は docs 配下の upgrade.html に記載されています。ちなみにここには「extlibディレクトリ内のファイルをアップロードするときは、以前Movable Typeをインストールしたときにインストールしたライブラリをどれも上書きしないよう注意してください。」と書かれてますが、思いきり上書きしてしまいました。
3.アップグレード実行
ブラウザより
- http://Blog-URL/mt-upgrade31.cgi
を実行します。
パソコンがガリガリとしばらく動作して、下記の画面が表示されます(画面に"Error"とか出たので一瞬ドキッとしましたが成功のようです)。
![]() |
4.不要ファイルの削除
mt-upgrade31.cgiを削除します。
5.Typekey関連タグの修正
3.11ではTypekey関連のタグが変更されており、これを修正。またTypekey認証がinvalidになる不具合の修正も併せて行いました。具体的には個別エントリーアーカイブのサイン・インおよびサイン・アウト時のリンクをそれぞれ下記のように修正します(各2ヶ所、計4ヶ所)。
サインイン修正前
<a href="<$MTSignOnURL$>&v=1.1&<MTIfNeedEmail>need_email=1&</MTIfNeedEmail>t=<MTTypeKeyToken>&_return=<$MTCGIPath$><MTCommentScript>%3f__mode=handle_sign_in%26static=1%26entry_id=<$MTEntryID$>">サイン・イン</a>
サインイン修正後
<a href="<$MTRemoteSignInLink static="1" encode_html="1"$>">サイン・イン</a>
サインアウト修正前
<a href="<$MTCGIPath$><$MTCommentScript$>?__mode=handle_sign_in&static=1&entry_id=<$MTEntryID$>&logout=1">サイン・アウト</a>
サインアウト修正後
<$MTRemoteSignOutLink static="1" encode_html="1"$>">サイン・アウト</a>
6.再構築
これを行わないと各ページのバージョン表示が変更されませんでした。
7.その他
これは直接アップグレードとは関係ありません。テンプレート編集画面の横幅は3.01D-jaより改善されたようですのでエントリー入力画面ともに縦幅のみ修正しました。
ちなみに各ファイルの行数は
- /tmpl/cms/edit_template.tmpl:86行→128行
- /tmpl/cms/edit_entry.tmpl:182行→200行
に変わっていました。
8.アップグレードをして気がついたこと
3.11用にいくつか記事を書いておりますが、新規インストールとアップグレードで管理メニューの表示に差分があることに気がつきましたのでお詫び方々ご紹介しておきます。
- 既存テンプレートの名称が変更されていない(主要テンプレートは英語のまま)。
- アップグレードではテンプレートモジュール「Remember Me(コメント時の個人情報のcookie関連スクリプト)」が存在しない
以上です。