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

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

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

今日は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>

トラックバック(2)

トラックバックURL: http://junnama.alfasado.net/cgi/mt/mt-tb.cgi/159

WebSig24/7MT4分科会第1回イベントは10月13日(土)、CG-AR... 続きを読む

調子にのってきたので連投。タグってどのくらい使われているのかわからないが、このサ... 続きを読む

コメント(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しておきました。

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2007年10月13日 23:31に書いたブログ記事です。

ひとつ前のブログ記事は「スパマーにCGI叩かれたら負けかなと思っている(2)。」です。

次のブログ記事は「MTSetVar(Block)/MTIfタグの具体的な利用例。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.2.6