MT 標準の動的生成は「改行設定」がポイント

シェアする

【常識】MT の動的生成は Smarty を使ってる【今更】 : 亜細亜ノ蛾 に引き続き、PHP 版のダイナミックパブリッシング(動的生成)について。

動的生成に移行する場合に障害となるのは、やはりプラグインを使っている場合です。PHP に対応したプラグインを使っているの場合は、テンプレートの変更なしでもそのまま移行できます。mt_dir/php/plugins をざっくり見て、使っているプラグインの名前があれば、大丈夫でしょう(それでいいのか)。もし、PHP 非対応だった場合はテンプレートの書き直しが必要です。

──だがしかし。ちょっと落とし穴なのが、「改行設定」──いわゆるテキストフォーマットを変更するプラグインを使って記事を書いていた場合。このせいで自分は PHP 版の動的生成に移行できなかった、のをいま思い出しました。

いくつか抜け道があるので紹介します。

記事のモジュール化

あなたのmovabletype、重たくないですか?(テンプレートモジュール化) (CROSSBREED クロスブリード!) は、2004 年に書かれた記事ながら今後も残り続ける良記事です。

この記事の終わりの方にある記事の部分のモジュール化を利用すると、PHP 非対応版のテキストフォーマッタを使っていても、無理矢理「ページの動的生成化」ができます。すなわち、

  1. 記事部分(本文と追記)をモジュール化
    • 静的に生成
  2. 個別ページ(など)のテンプレートを変更

という、ちょいワルな方法。記事の部分は、けっきょく静的生成だったり。

ただ、この「一つのページで静的生成と動的生成を混在できる」というのは頭の隅に置いておくヨロシ。いろいろな場面で応用ができるでしょう。

エクスポート・インポートする方法

記事をすべて「改行設定 : なし」、つまりプレーン (X)HTML に変換してエクスポート、そしてインポートする方法。大がかりでデータベースのバックアップ必須です。

で、問題のプレーン (X)HTML に変換する方法は、「それ Plu」──と言いたいところですが、「MT 標準で出来ることは MT 標準ですべし」と、ばっちゃが言ってた(元ネタ知らぬ)。

要するに、「エクスポート」準拠のテンプレートを一つ作ればいいわけです。自力で作ろうとしましたが、Movable Type Knowledge Base: Customized Exports で six apart 純正(?)のテンプレートが公開されているので、有り難く利用します。

CONVERT BREAKS: の部分は `0`(変換無し)にする必要があります。

Markdown の場合

そもそもテキストフォーマッタに Markdown を使っている場合、初めから PHP 版があるので、そのまま移行できますね。

Movable TypeのDynamic PublishingでMarkdownを使う (pLab blog)

対応しているブログも多いし、Markdown はかなりお勧めです。

コメント

  1. oscar より:

    いろいろ試してますが、やっぱりプラグイン使いたいんですよね。
    駄目なのはコンテナ・タグ系と改行設定系・グローバル・アトリビュートもかな?Transformer微妙ですね。
    今はインデックスは静的でこれまた静的な本文をPHPでインクルード、エントリーはPerl版ダイナミックでこれも同じくインクルード、カテゴリーや月別などはダイナミックという感じが良さそうかなと思ってます。
    改行設定もプラグインが利くし、とにかくPerl版のキャッシュが効いてる時のスピード感は良いですね。
    もうキャッシュの為なら、大事なエ◇ビ〇オ1っ本消します!

  2. asiamoth より:

    亀レス スマソ。Perl 版は、自分の環境ではよくエラーになるんですよね。50x エラーになるならともかく「ダイナミック・パブリッシング エラー」という「ちゃんとしたページ」を生成してくれるので、エラーページが Google に登録されていまいます。
    コードをちょっと変えるだけで直りそう(50x エラーで終了とか)だけど、下手にシロウトが触って、変なセキュリティホール開けるのも愚か、ということでセキュリティの勉強中です。