テンプレートを使えばもっと簡単にできるんじゃないかなぁと思って。
今日は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


コメント (2)
多分初めてコメントいたします。
exportformat ですが、このままだと本文中に「行頭がハイフンで始まる行」が複数行存在したときに、そのうちの最初に見つかった行しか数値文字参照への変換が行われません。
exportformat.pl 20行目辺りの
$text =~ s/^-/-/gs;
を
$text =~ s/^-/-/gm;
にすればOK(動作確認済み)。
あとこれ、ダイナミックパブリッシング対応の環境なら無駄な空行もできないし再構築の一手間が減るので便利じゃないかな、とか思いました。
ので、exportformat.pl のダイナミックパブリッシング対応PHP版書いてみました。
↓こんな感じ。
<?php // Save as "modifier.exportformat.php"
function smarty_modifier_exportformat($text) {
return preg_replace('/^-/m', '-', $text);
}
?>
こちらも動作確認済み。
ご参考までに。
投稿者: あんちもん2 | 2007年10月14日 21:24
日時: 2007年10月14日 21:24
あんちもん2 さん
Junnama です。ありがとうございます(汗;;
修正してUpしておきました。
投稿者: junnama | 2007年10月15日 01:13
日時: 2007年10月15日 01:13