
2008/04/15 18:30
Movable Typeの変な出力ファイル名(basename)の命名規則を削除する
Movable Typeは出力ファイル名を自動で作ってくれます。これは便利な機能なんだけど、有効なのは英語を使用する人のみですね。
例えば、今回のエントリーのタイトルだと「movable_typebasename」って出力ファイル名(basename)を作ります。なんだこりゃ?って感じです。英語のタイトルだと、綺麗に作ってくれるんですが、日本語だとダメすぎです。
タイトルにアルファベットが含まれないと「post_XXX」(XXXには数字)になります。いっそのこと、こっちに統一してくれた方がデータベースを眺めたときに綺麗でいいです。あとは、いろいろあるんだよ。
と言うことで、変な命名規則を削除して、全部post_XX形式にしてしまう方法です。
/lib/MT/Util.pm 858行目〜 sub make_unique_basename
sub make_unique_basename {
my ($entry) = @_;
my $blog = $entry->blog;
my $title = $entry->title;
$title = '' if !defined $title;
$title =~ s/^\s+|\s+$//gs;
if ($title eq '') {
if (my $text = $entry->text) {
$title = MT::I18N::first_n_text($text, MT::I18N::const('LENGTH_ENTRY_TITLE_FROM_TEXT'));
}
$title = 'Post' if $title eq '';
}
my $limit = $blog->basename_limit || 30; # FIXME
$limit = 15 if $limit < 15; $limit = 250 if $limit > 250;
my $base = substr(dirify($title), 0, $limit);
$base =~ s/_+$//;
$base = 'post' if $base eq '';
my $i = 1;
my $base_copy = $base;
my $class = ref $entry;
while ($class->count({ blog_id => $blog->id,
basename => $base })) {
$base = $base_copy . '_' . $i++;
}
$base;
}
ここがソレです。コレを変更します。
sub make_unique_basename {
my ($entry) = @_;
my $blog = $entry->blog;
# my $title = $entry->title;
my $title = '';
# $title = '' if !defined $title;
# $title =~ s/^\s+|\s+$//gs;
# if ($title eq '') {
# if (my $text = $entry->text) {
# $title = MT::I18N::first_n_text($text, MT::I18N::const('LENGTH_ENTRY_TITLE_FROM_TEXT'));
# }
$title = 'Post' if $title eq '';
# }
my $limit = $blog->basename_limit || 30; # FIXME
$limit = 15 if $limit < 15; $limit = 250 if $limit > 250;
my $base = substr(dirify($title), 0, $limit);
$base =~ s/_+$//;
$base = 'post' if $base eq '';
my $i = 1;
my $base_copy = $base;
my $class = ref $entry;
while ($class->count({ blog_id => $blog->id,
basename => $base })) {
$base = $base_copy . '_' . $i++;
}
$base;
}
とりあえず、不要なところをコメントアウトした感じで、
my $title = '';
だけ追加しています。
これで、おうけい。
ただ、今までに投稿した記事の変なベースネームは治りません。なおしたければ、一度、エントリー全てをエクスポートし、再度インポートすればいいのです。
インポート・エクスポートでは、3.x系ではbasenameやtagは消えてしまうので注意が必要ですよ。
- 関連するエントリー
- MovableType
- Movable Typeの変な出力ファイル名(basename)の命名規則を削除する
- Movable Typeで、いま見ているエントリーを編集する Bookmarklet
- Movable Typeのカテゴリー・アーカイブ、日付・アーカイブとエントリー・アーカイブの見出しレベルの調整
- 今度こそ、空行・blockquote・pre・code対応のhtml_text_transform完成
- Movable Typeで下書きエントリーの一覧ページを作成・表示する
- Movable Typeの画像アップロードを楽にする
- 空行ありのblockquoteやcodeなどに対応したhtml_text_transform完成!
- html_text_transformの確認用エントリ
- html_text_transformにはまる。。
- PagedArchivesの<b>タグをやめる
- html_text_transformをblockquoteとcodeに対応させる
- ロリポップ チカッパ さくら レンタルサーバー比較
- チカッパのMySQLの速度がいまいちです。
- MovableTypeはユーザIDを配信する
- Movable Typeの改行を変換するって機能
- Movable Typeへファイルアップロードのブックマークレットのようなもの
- Movable Type 3.3 でカテゴリーの順番を変更
- 大切な日、少し寝坊をしてしまった日
- ロリポップでMySQLは使うな!!
- Movable Type で MySQL
- Movable Type のいいサイト見つけた
- <MTEntries>
- Movable Type + Mac OS X
- 前後のエントリー
- Old: links for 2008-04-11
- New: links for 2008-04-16


全部postにすると、だんだん遅くなるよ。
データベースに入ってしまえば関係ないと思います。
投稿画面でどれだけ遅くなるのか分からないですけど・・・whileループですかね・・・それよりもサーバーの環境に依存するような気がします。
あと、何故遅くなるのか詳しく教えていただけると、ちょっと嬉しいです。。