« スパマーにCGI叩かれたら負けかなと思っている(2)。 | メイン | MTSetVar(Block)/MTIfタグの具体的な利用例。 »

MT3→MT4へタグやbasenameを引き継いで(インポート&エクスポートで)簡単に移行する方法。

テンプレートを使えばもっと簡単にできるんじゃないかなぁと思って。

今日はWebSig MT分科会だったのですが、テーマ的に「テンプレート」だったので「ハック」ネタじゃなくって「テンプレート」ネタです。

追記:

ここにありますね。例が。なぁんだ...

MT3のエクスポート形式で書き出してMT4へインポートすると「出力ファイル名(basename)」とか「タグ」とかが引き継がれないので、その対処法。つまり、「書き出し」の代わりののテンプレートを作ってしまえないかな、というお話。

殆どMT4の lib/MT/ImportExport.pm のまま。改行位置とかがMT3だとうまくいかないところがあるのでちょっと調整しました。

MTのエクスポートフォーマットではセパレーターに連続したハイフン(-)が使われるので、ついでに行頭の-を数値参照に変換するプラグインも一緒に作った。


<$MTEntryBody exportformat="1"$>

プラグインのダウンロード

MT3側でインデックス・テンプレートとして以下のテンプレートを作成して再構築。生成されたソースを保存してMT4へインポートするとbasenameやタグをそのまま引き継げます。


<MTEntries lastn="1000">
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
BASENAME: <$MTEntryBasename$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
ALLOW COMMENTS: <$MTEntryFlag flag="allow_comments"$>
CONVERT BREAKS: <$MTEntryFlag flag="convert_breaks"$>
ALLOW PINGS: <$MTEntryFlag flag="allow_pings"$>
<MTIfNonEmpty tag="MTEntryCategory">
PRIMARY CATEGORY: <$MTEntryCategory$></MTIfNonEmpty>
<MTEntryCategories>
CATEGORY: <$MTCategoryLabel$>
</MTEntryCategories>
DATE: <$MTEntryDate format="%m/%d/%Y %I:%M:%S %p"$>
<MTEntryIfTagged>
TAGS: <MTEntryTags include_private="1" glue=","><$MTTagName quote="1"$></MTEntryTags></MTEntryIfTagged>
-----
BODY:
<$MTEntryBody convert_breaks="0" exportformat="1"$>
-----
EXTENDED BODY:
<$MTEntryMore convert_breaks="0" exportformat="1"$>
-----
EXCERPT:
<$MTEntryExcerpt no_generate="1" convert_breaks="0" exportformat="1"$>
-----
KEYWORDS:
<$MTEntryKeywords exportformat="1"$>
-----
<MTComments>
COMMENT:
AUTHOR: <$MTCommentAuthor strip_linefeeds="1"$>
EMAIL: <$MTCommentEmail strip_linefeeds="1"$>
IP: <$MTCommentIP strip_linefeeds="1"$>
URL: <$MTCommentURL strip_linefeeds="1"$>
DATE: <$MTCommentDate format="%m/%d/%Y %I:%M:%S %p"$>
<$MTCommentBody convert_breaks="0" exportformat="1"$>
-----
</MTComments>
<MTPings>
PING:
TITLE: <$MTPingTitle strip_linefeeds="1"$>
URL: <$MTPingURL strip_linefeeds="1"$>
IP: <$MTPingIP strip_linefeeds="1"$>
BLOG NAME: <$MTPingBlogName strip_linefeeds="1" exportformat="1"$>
DATE: <$MTPingDate format="%m/%d/%Y %I:%M:%S %p"$>
<$MTPingExcerpt exportformat="1"$>
-----
</MTPings>
--------
</MTEntries>

カテゴリー: MovableType

トラックバック

このエントリーのTBPingURL:
http://junnama.alfasado.net/mt/RRrt4444.mt/2238/_libmt.html

この一覧は、次のエントリーを参照しています: MT3→MT4へタグやbasenameを引き継いで(インポート&エクスポートで)簡単に移行する方法。:

» 第1回MT4分科会が終了しました。 送信元 WebSig24/7
WebSig24/7MT4分科会第1回イベントは10月13日(土)、CG-AR... [詳しくはこちら]

» MTエントリーのタグを一括で出力/入力 送信元 広報部ログ
調子にのってきたので連投。タグってどのくらい使われているのかわからないが、このサ... [詳しくはこちら]

コメント (2)

多分初めてコメントいたします。
exportformat ですが、このままだと本文中に「行頭がハイフンで始まる行」が複数行存在したときに、そのうちの最初に見つかった行しか数値文字参照への変換が行われません。
exportformat.pl 20行目辺りの
$text =~ s/^-/&#45;/gs;

$text =~ s/^-/&#45;/gm;
にすればOK(動作確認済み)。

あとこれ、ダイナミックパブリッシング対応の環境なら無駄な空行もできないし再構築の一手間が減るので便利じゃないかな、とか思いました。
ので、exportformat.pl のダイナミックパブリッシング対応PHP版書いてみました。
↓こんな感じ。

<?php // Save as "modifier.exportformat.php"
function smarty_modifier_exportformat($text) {
return preg_replace('/^-/m', '&#45;', $text);
}
?>

こちらも動作確認済み。
ご参考までに。

あんちもん2 さん

Junnama です。ありがとうございます(汗;;

修正してUpしておきました。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


トップページ | アーカイブ(このブログの全てのエントリーの一覧)

最近のエントリー

このブログのフィードを取得
[フィードとは]