MovableTypeの最近のブログ記事

デフォルトのテンプレートに足りないものの最たるのが、パンくずリスト。SEO対策もあってググれば情報はたくさんあるんですが、MT3関連が圧倒的に多くて、しかもMT4ではコピペで使えないという罠。タグを理解していればそんなに難しい記述ではないんでしょうけど、自己流で書くとやっぱりエラーの嵐。再構築ではねられて先に進めません。最終的にみつけたのが、Movable Type でパンくずリストを自動で設置する方法|Webデザイナー・Webクリエイターの為のNews・求人情報の記事。そのままでも使えますが、個別エントリーを示す部分にはリンクを張りたくなかったのと、HOMEではなくブログトップを起点にするよう変更させていただきました。以下、覚え書き。

<mt:If name="main_index"><mt:Else>
<div id="pankuzu_settei">
<MTIgnore>カテゴリアーカイブ</MTIgnore>
<MTIf name="category_archive">
<div id="topicPath">
<p><a href="<$MTBlogURL$blog/>">TOP</a> &gt; <MTParentCategories
glue=" &gt; ">
<a
href="<$MTCategoryArchiveLink$>"><MTCategoryLabel
decode_html="1" remove_html="1"></a>
</MTParentCategories></p>
</div>
</MTIf>
<MTIf name="entry_template">
<MTIgnore>エントリアーカイブ</MTIgnore>
<div id="topicPath">
<p><a href="<$MTBlogURL$blog/>">TOP</a> &gt; <MTParentCategories
glue=" &gt; ">
<a
href="<$MTCategoryArchiveLink$>"><MTCategoryLabel
decode_html="1" remove_html="1"></a>
</MTParentCategories> &gt; <$MTEntryTitle$>
</p>
</div>
</MTIf>
<MTIf name="datebased_only_archive">
<MTIgnore>月別アーカイブ</MTIgnore>
<div id="topicPath">
<p><MTArchivePrevious><a
href="<$MTArchiveLink$>">&lt; <$MTArchiveTitle$></a> | </MTArchivePrevious><a
href="<$MTBlogURL$blog/>">TOP</a><MTArchiveNext> | <a
href="<$MTArchiveLink$>"><$MTArchiveTitle$> &gt;</a></MTArchiveNext></p>
</div>
</MTIf>
</div>
</mt:If>

再構築で全ての記事にパンくずリストが付くのは、ある意味楽チン。しかし、そこに至るまでの道はキビシイです。Six Apartさんには、是非とも次のバージョンからは標準でパンくずリストをテンプレートに組み込んでもらいたいです。知識の追いつかない管理人に愛の手を~。

MT4.x覚え書き

| コメント(0) | トラックバック(0)

MT使うなら当然のようにデータベースはMySQLと思っていましたし、関連雑誌や情報系ブログでもMySQL前提で話が進められています。が、自宅サーバーや専用サーバーならともかく、リーズナブルな価格の共用サーバーだとMySQLが貧弱で再構築に恐ろしく時間がかかる現実に突き当たってしまいました。はっきり言って、数百件超えたあたりからエントリー投稿に5分以上、サイトを再構築したら数時間という非効率な事態に陥ってしまったのです。対処策を探しているうちに複数のサイトでMySQL→SQLiteで再構築が早くなったという記事を発見。私の借りてるさくらも現在は標準でSQLiteが使えるようなので、モノは試しとやってみることにしました。ちょうど、MT4.22→MT4.23へのバージョンアップもありましたので、どうせなら最初から作り直した方がスッキリします。マニュアルにはさっくりバージョンアップできるとありますが、やっぱり躓きはあるわけで、次回のための覚え書き。

一番の問題は、php化をどうするか。だいたいここで500エラーを起こして数時間無駄にするんですよね。ええ、今回もしっかりひっかかりました。そんな私のためにあるような解決法。

phpファイルを吐き出すように設定変更。変更ファイル場所は、 lib\MT\Core.pm。このCore.pmをエディタで開いて308行目~313行目あたり。

変更前

‘DBUmask’ => { default => ‘0111′, },
‘HTMLUmask’ => { default => ‘0111′, },
‘UploadUmask’ => { default => ‘0111′, },
‘DirUmask’ => { default => ‘0000′, },
‘HTMLPerms’ => { default => ‘0666′, },
‘UploadPerms’ => { default => ‘0666′, },

変更後

‘DBUmask’ => { default => ‘0022′, },
‘HTMLUmask’ => { default => ‘0022′, },
‘UploadUmask’ => { default => ‘0022′, },
‘DirUmask’ => { default => ‘0022′, },
‘HTMLPerms’ => { default => ‘0705′, },
‘UploadPerms’ => { default => ‘0705′, },

インストール後、管理画面でアーカイブの出力する拡張子をphpに変更し、テンプレートの拡張子もphpに指定して再構築すればok。この時、フォルダのパーミション変更もお忘れなく。せっかくphpファイルを吐き出してくれてるのにエラーでまくりで見えないっ!と叫ぶことになります。

上記のお知恵は、MTOS覚え書き - blackbird からお借りしました。ありがとうございます。ただ、こちらも現在はWPをご利用のご様子。ブログツールとしてしか使わない人には確かにWPの方が融通が効きますよね。私はWPのタグが理解できなくてMTに戻ってきましたが。

次に大変だったのが、plugin。なんかいつも探すのに時間がかかってる気がする。一応、利用している一覧メモはあるんだけどMTがバージョンアップすると同時にpluginもバージョンアップするし、標準機能に組み込まれたり、使えなくなったりと結局、関連サイトを全部回ることになります。毎回増減があるので総数はあまり変わらないけど、手間は掛かる。

まずは、Movable Type Plugin Directory - The blog of H.Fujimotoでひととおりチェックし、不足分はググって、それでも見つからなければ諦める。MT4で大幅に変わったため、対応してないpluginはどうしようもありません。

でも、最終的に時間がかかるのは、テンプレートのカスタマイズです。なんだかんだ言っても標準テンプレートが一番軽いわけで、基本に返ってタグとにらめっこしました。コメントやTB回りは昔のをアレンジしたり、不要なものを削除したり、今はそれなりの形になっているハズ。ポータルサイト形式のマルチブログ採用です。これでいざとなればカテゴリーごとのブログに作り替えることができる!

あと、忘れてはならないのが、データベースのスリム化。MySQLはphpMyAdminがあるので、データベースの最適化を定期的に行っていたのですが、SQLiteはそうもいかないらしい。TKSQLiteをDLしてきてオフラインで処理(VACUUM)する必要があるそうです。でないと、DBがものすごく肥大化してくるとか。詳しくは、SQLiteのサイズを小さくする。 - NOBODY:PLACE - MUTTERに図入りで解説があります。TkSQLite本家サイトは英語なのでご注意を。MT3.xには、SQLiteのサイズを小さくしてくれるpluginがあったようですが、残念ながらMT4.xには未対応なんだそうです。

取りあえず、このくらいかな?時間がないといいつつ、こんなことやってるから、ますます時間が足りなくなるのよね。毎回反省するけど、すぐ忘れるトリ頭。でも、でも、SQLiteにして、エントリー投稿が10秒前後、全体の再構築でも約30分に短縮されました。NOBODY:PLACE - MUTTERさんは、4000件のエントリーを扱っているということなので、しばらくはSQLiteでやっていけそうです。

遅ればせながら、ようやくMT4.21へバージョンアップしました。MT4.1より再構築時間が大幅に短縮されていると聞いていたので、もっと早くにバージョンアップしたかったんですが、まとまった時間がなかなか取れなかったのです。公式サイトのマニュアルなどには、とっても簡単!と書いてありますが、テンプレートまわりをやり直すとなると結構時間がかかるんですもの。はい、実際、1日仕事でした。

手順の方は、公式にあるとおり、新ファイルを全部アップロードして、必要な旧ファイルを移動させて、フォルダ名を変更後ログインしてバージョンアップ。ここまでは予定通りサクサク。夕べの早い時間帯にできました。問題は、ここからです。

つまづき、その1
テンプレートがうまく反映してくれない><
どこをどう間違っていたのか、最後までわからず、二度ほど総入れ替えしました。

つまづき、その2
タグ回りが変わっているのと、pluginの関係で、再構築エラーでまくり。
とにかく再構築が激重で、夜中にここで一旦断念しました。

つまづき、その3
MT4.2対応のplugin捜し。
TaggingHelper For MT4.2は、暫定版。
ModTextFilterは、対応版が出ました。
その他、アップロードを忘れて、再構築エラーが出る度にいろいろDL。MT4が出たときほどではありませんが、小さなバージョンアップをしているpluginがあって、それなりに手間取りました。

つまづき、その4
Firefoxでは問題ないのに、IE6だとバナーと本文の間に空白ができてしまうのと、エントリーによって、サイドバーがずり落ちてしまう。
IE6での空白は、php化してる場合、XML宣言を漏らしているとできるっぽい。サイドバーの部分的なズレは、原因不明です。そういうエントリーが出力されたら、運が悪かったということで。

問題の再構築時間ですが、約1200エントリーで、1時間半くらい。MT4.1の時は、半日かかってもエラーがでて終わらないときがありましたから、かなり高速化が図られていると思います。ログインなど全体的に早くなってますから、その点だけはバージョンアップしてよかった~。サイトスタイルがずれる点については、自力解決は無理そうなので情報待ちです。

MT3.xからMT4へバージョンアップして、一番困ったのがテンプレートです。タグ回りが激変したので、今までのと互換性があまりなくて、対応したテンプレートが出てくるまでデフォルトのテンプレートを我慢して使った人も多いはず。スキンは何パターンかありましたけど、最低限のタグとCSSの知識がないとお手上げ状態で。そのあたりがMT4.1ではかなり改良されてます。一番大きいのは、テンプレートのplugin化でしょう。これで一発導入が可能になって、テンプレート変更の複雑な作業からかなり解放されたと思います。テンプレートを作る方は大変でしょうけど...。

私が今使っているのは、mt.Vicunaです。他に、試したテンプレートは、小粋空間さんとMovable Type備忘録様のMovable Type 4.1 用テンプレート(Pandora)です。

Vicunaにしたのは、カスタマイズのしやすさが一番大きな理由です。あとデザインが私好みにシンプルだったことかな。そうは言っても、MTが自力で設置できて、CSSがそれなりに編集できることが導入の最低条件になると思います。

小粋空間さんのテンプレートは、カスタマイズしやすいし、関連情報もブログにたくさんあるのですが、デフォルトのままだと自分の求めていたデザインと少し違うので変更が面倒で諦めました。ですが、カスタマイズ記事がとても豊富なので、カスタマイズ初心者が一番取り組みやすいテンプレートだと思います。

Pandoraは、そのまま使うなら、それこそ面倒な作業もなくて、一番楽チン!必要なpluginの指定もあるし、Javascriptも同梱されてるという超親切設計なので、カスタマイズすることなく、そのまま使いたい人にはホント、オススメです。その代わり、カスタマイズしようと思ったら、CSSはもちろんのこと、MTタグとJavascriptとAjaxの知識が必要です。管理人さんはとても親切に質問などに答えてくださるのですが、如何せんこちらの知識が追いつかず、ワタクシ、挫折しました。時間を掛ければ何とかなるとは思ったんですが、カスタマイズに時間が掛かりすぎて肝心のブログ更新が全く出来ない状態になったので、これでは本末転倒だなって...。貴重な時間を割いて相談にのってくださった管理人さんには本当に申し訳ないです。

Vicunaを導入するのは、2回目でして、MT4になってすぐの頃一度やってみて、その時はあまりの再構築の遅さに挫折しました。その後、再構築が激重の理由が判明したので、そこを削って今回は無事に適応させることができました。激重の理由は、archiveリストが全ての更新に掛かってくることでした。なので、更新のチェックを外して、archiveを表示しないように該当の場所を削ることで普通に再構築できました。

長らくMT4のウリであるウェブページの作成方法がわからないままに来ていましたが、ようやく作成できなかった理由が判明しました。その理由とは、またしても

アーカイブマッピング

の作成不足でした。わかってみれば納得の理由なんですが、わからない人にはすごーっくわかりにくい!どこまで祟るのか、アーカイブマッピングって感じです。

参考にさせていただいたのは、Eternal World:ウェブページ機能です。ありがとうございました。以下、ウェブページのアーカイブマッピング作業の覚え書きです。
1. 『アーカイブテンプレート』の『ウェブページ』を選択。
2. 画面下部の『アーカイブマッピング』の『新しいアーカイブマッピングの作成』を選択。
3. 『種類』を『ウェブページ』として、『追加』を選択。
4. 『ウェブページ』保存時のパスを設定して『保存』、『再構築』を行う。

ウェブページのファイル名は「folder-path/page-basename.php」を指定しました。この作業を終えてから、ウェブページを作ると自分の指定したパスの下にウェブページのファイルが生成されてます。はるか長い道のりでした。ちなみに、それまで作成していたウェブページには反映されませんので、アーカイブマッピング指定後に作り直す必要があります。

MT4になってからアーカイブマッピングの設定が重要になってきたわけですが、デフォルトの設定だとphp化したときにいろいろ不都合があるので、現在の設定の覚え書きメモ。再インストールする度に、アーカイブマッピングの設定で四苦八苦してるもんで...。個別ファイルのマッピング指定はphp化関連記事でよくみかけるのですが、他の項目の指定タグはいつも探しまくってます。

今回参考にさせていただいたのは、WingMemo:MTを入れたら真っ先にするべき設定~アーカイブマッピングです。

・個別頁(年/月日-時分)
 <$MTArchiveDate format="%Y/%m%d-%H%M"$>.php
・日別頁(年/月日)
 <$MTArchiveDate format="%Y/%m%d"$>.php
・月別頁(年/月)
 <$MTArchiveDate format="%Y/%m"$>.php
・カテゴリ頁(カテゴリーのファイル名)
 <$MTCategoryBasename$>/index.php

カテゴリー名に日本語表示が出来なかった頃は、カテゴリ頁の説明タグ <$MTCategoryDescription$>を使っていたけど、今はカテゴリーの出力ファイル名を管理画面から好きに変えられるようになったので、<$MTCategoryBasename$>を使うようになりました。

フラッシュ素材を使ったカレンダーといえば、Kinarie&May様がデフォルトですが、MT4.0にバージョンアップした当初、フラッシュで「当日」は表示できるのに、その日の記事にリンクできず、また月別アーカイブ(XML)も生成されないというドツボにハマっておりました。

最大の原因は、XMLファイルをどのアーカイブで作ってどこでマッピングするかが理解できていなかったことです。MT4になって、アーカイブは「ブログ記事」「ブログ記事リスト」「ウェブページ」の三種類あります。そのうち、フラッシュカレンダーに必要な「月別XML」は「ブログ記事リスト」で作成する必要があります。作成する内容は、Kinarie&May様に記載されている内容をそのままコピペしてOK。テンプレートを保存すると、下部に「アーカイブマッピング」の項目が表示されるので、「新しいアーカイブマッピングを作成」→「種類」で「月別」を選ぶ→「追加」をクリック、で「パス」欄が表示されます。その後、「パス」のセレクトボックスから「カスタマイズ」を選んで、ようやくKinarie&May様で指定された形式が指定できるわけです。この時、「月別」の横のチェックボックスは「空欄」のままにしておきます。チェックがあったら、必ず、外す!!

今だから言える失敗ですが。
私は「ブログ記事」で新たなファイルを作り、その後、変えてはいけない「月別アーカイブ」のパスを変更して、月別アーカイブそのものまで狂わせてしまいました。失敗しても「初期化」で元に戻せるので、なんとか修復できましたが、MT4のアーカイブマッピングはすごくわかりにくいです。

MT4.0の謎といといえば、もうひとつ。埋もれない記事のための「ウェブページ」ですが、なぜかファイルが生成されません。フォルダは作成できるのだけど、肝心なページが作成されないんです。パスの設定をカスタマイズしたせいか?と思ってデフォルトに戻してもダメ。「保存しました」と表示は出るのに、表示をクリックすると、404ページに飛びます。念のためFTPでサーバー内を探してみましたが、どこにも存在せず。PHP化する前に、一度だけ作成したフォルダ内にindex.htmlでファイルが作られたことがありましたが、その後はhtmlでもPHPでもウエブページが作れないんです。面倒になったので、紹介記事などは普通のhtmlで作ってリンクしちゃいましたが。なので、Pluginを使ったメールフォームが作れない(泣)。このあたりの謎も誰か解明してくれないかしら...。どこまでも他力本願なワタクシ。

2008.01.05.追記
ウェブページが作成できなかった理由が判明しました。
関連記事:ウェブページ作成手順

遅まきながら、フラッシュカレンダーのバージョンを2→3へバージョンアップしました。ファイル配布と設置方法については、Kinarie&May様のところで詳しく延べられているので、私が詰まったところだけ、メモ。

今回からxmlファイルでアーカイブのマッピング機能を使うことになり、そのテンプレート作成が必要です。MTの鬼門といえば、何か作業すると再構築!で、ここでエラーでまくり…。原因は、日付アーカイブにチェックが入っていなかったからでした。一日に何回もエントリーしないので、日付アーカイブの存在をころっと忘れていましたの。そこをチェックして再構築したらOK。

記事数の割りにはサイトが重いと思っていたら、何のことはない、トラックバックスパムがやたらと増えてるじゃありませんか。1日100件を越える日もザラで、さすがにこれは放置できないと悟り、対策を取ることにしました。自力解決は不可能なので、他力本願で情報探し。とはいっても、リンク先のカスタマイズ記事をじっくり読む程度なんですが(^^ゞ

そこで見つけたのが、Milano::Monolog: トラックバックのRDFを削除しましたなのですが、悲しいかな、私には意味不明。更にそれを噛み砕いて説明してくださっている記事を探したところ、LiveMore International Inc.: トラックバック スパム対策をとるを見つけました。要約すると、どうやら、トラックバックCGIのファイル名の変更とエントリー・アーカイブの<$MTentryTrackbackData$>を削除するということらしいです。以下、自分用の覚え書き。

1.CGIのリネーム
mt-config,cgiファイルをエディタで開いて最後に下記二行を追加。
TrackbackScript mt-tb-XXX.cgi
CommentsScript mt-comments-XXXX.cgi

FTPからサイトにアクセスして、ファイル名を追加した名前に変更。
mt-tb.cgi → mt-tb-xxx.cgi
mt-comments.cgi → mt-comments-xxx.cgi

2.エントリーアーカイブからRDFを削除する
ブログにアクセスしてテンプレートからエントリー・アーカイブを選択。
<$MTentryTrackbackData$>を削除して保存。

3.再構築

自動的にトラックバックURLを収集してまわるスパマーには有効な対策ということなので、トラックバックスパムを手動で削除する日課からは解放される日も近いと思います。

1月2日追記
環境によっては再構築してもコメントエラーになることがあります。mt-site.jsとエントリー・アーカイブのタグを直接いじる必要があるので、それなりに対処できる方以外は、mt-comments.cgiはいじらない方が無難です。

スパム撃退

| コメント(0) | トラックバック(0)

ここ最近、日本語の困ったちゃんスパムが来襲しています。日本語を含まないスパムは問答無用で削除してくれるプラグインを入れているのだけど、表面上は当たり障りのない文語で延々と過去のエントリーにトラックバックを飛ばしてくれるので、地道に削除する毎日でした。実は、キーワードでスパム撃退のプラグインを入れているんだけど、使い方がイマイチよくわからなくて、連日苦戦していたのでした。それも今日でようやく終わり。さきほど設定し終えたら、見事に表面からは消えていました。削除は面倒だから自動削除におまかせね。数日裏で居座ってるけど、そこまで削除に手を掛けてる暇はないのだ。

日本語のスパムでお困りの方、MovableTypeに標準装備されてるプラグインを是非活用しましょう。英語だけでなく日本語のキーワードでも指定できます。完全対処は不可能かも知れないけど、チマチマ手動で削除するより、かなりマシになりますよ。

お知らせ

■お猫さま至上主義です。
このBlogについて
プロフィール
メールフォーム
猫派の読書空間Ver.2
(2009-現在)

■推奨ブラウザ:Firefox

アーカイブ

Powered by Movable Type 4.25