ファイルのアップロードで上書きを有効にする
Movable Type ではFTPツールを利用せずに、管理メニューの「ファイルのアップロード」からファイルをアップロードすることができです。ただしデフォルト状態で /tmp が存在しない環境ではファイルの上書きができない(アップロード画面でエラーとなります)ため、やや不便に感じます。
上書き可能にするためには /tmp ディレクトリを作成するか、あるいは mt.cfg の TempDir を有効にし、アップロードしたファイルを一時保存するためのディレクトリを設定します。後者の場合の設定方法は下記の通りです。
変更前
# When processing uploaded files, if Movable Type notices that the file you
# uploaded already exists, it will allow you to overwrite the original file,
# by first asking for your confirmation. To do this, MT needs to write the
# uploaded data to a temporary file. That temporary file is stored in the
# directory specified by the TempDir setting; the value defaults to /tmp.
#
# TempDir /tmp/
#
変更後
# When processing uploaded files, if Movable Type notices that the file you
# uploaded already exists, it will allow you to overwrite the original file,
# by first asking for your confirmation. To do this, MT needs to write the
# uploaded data to a temporary file. That temporary file is stored in the
# directory specified by the TempDir setting; the value defaults to /tmp.
#
TempDir /~/tmp/
#
"~"の部分にはファイルを一時保存するtmp ディレクトリまでの絶対パスを記述します(試していませんが相対パスも有効かもしれません)。また配置するための tmp ディレクトリも予め作成しておきます。例えばローカル・サイト・パス配下に tmp というディレクトリを作成し、そこを参照するようにするのが良いのではないでしょうか。
なお上書きされる場合は「上書きしますか」という確認画面が表示されるので、そこで「いいえ」を選択すれば誤って上書きされることはありません。
2005.02.19 追記
Linux や UNIX のレンタルサーバの場合、システムデフォルトで /tmp が存在するので、本設定は不要と思われます。
テンプレートの保存・再構築を同時に行うボタンを追加
![]() これで再構築した結果が素早く確認できるようになります。精神衛生的にも良いでしょう。 |
参考サイトは下記です。ありがとうございました。
ここでは上記のカスタマイズ内容からの差分のみを掲載しておきます。差分は「保存&再構築」ボタンを画像のように一番左へ配置したことと、フォームボタンおよびメッセージの日本語表示です。下記に示す該当のファイルに赤字部分を削除し、青字部分をそれぞれ追加してください。
なお対象となるテンプレートは「インデックス・テンプレート(メインページ・スタイルシート等)」です。
lib/MT/App/CMS.pm
764行目付近
:
$param{rebuild_me} = defined $obj->rebuild_me ?
$obj->rebuild_me : 1;
$param{sr} = 1 if($q->param('sr')) ;
} elsif ($type eq 'blog') {
:
1177行目付近
sub save_object {
my $sr = 0;
my $app = shift;
my $q = $app->{query};
my $type = $q->param('_type');
my $id = $q->param('id');
:
1340行目付近
:
$obj->text($text);
## Save and Rebuild
if($q->param('sr')){
$sr = 1;
$app->rebuild_indexes( BlogID => $obj->blog_id, Template => $obj, Force => 1 )
or return;
}
} elsif ($type eq 'blog') {
if ($q->param('cfg_screen')) {
:
1550行目付近
:
} else {
return $app->redirect($app->uri .
'?__mode=view&_type=' . $type . '&id=' . $obj->id .
'&blog_id=' . $blog_id . '&saved=1');
if($sr == 1){
return $app->redirect($app->uri .
'?__mode=view&_type=' . $type . '&id=' . $obj->id .
'&blog_id=' . $blog_id . '&sr=1');
$sr = 0;
} else {
return $app->redirect($app->uri .
'?__mode=view&_type=' . $type . '&id=' . $obj->id .
'&blog_id=' . $blog_id . '&saved=1');
}
}
}
sub list_objects {
:
tmpl/cms/edit_template.tmpl
45行目付近
<TMPL_IF NAME=SR>
<div class="message">
<MT_TRANS phrase="Your template changes have been saved and your template has been rebuilt.">
</div>
</TMPL_IF>
<form method="post" action="<TMPL_VAR NAME=SCRIPT_URL>">
<input type="hidden" name="id" value="<TMPL_VAR NAME=ID>" />
<input type="hidden" name="blog_id" value="<TMPL_VAR NAME=BLOG_ID>" />
<input type="hidden" name="type" value="<TMPL_VAR NAME=TYPE>" />
<input type="hidden" name="__mode" value="save" />
<input type="hidden" name="_type" value="template" />
tmpl/cms/edit_template.tmpl(フォームボタンの配置場所変更)
130行目付近
<TMPL_UNLESS NAME=NEW_OBJECT>
<TMPL_UNLESS NAME=BUILD_DYNAMIC>
<TMPL_IF NAME=HAS_REBUILD>
<input type="submit" name="sr" value="<MT_TRANS phrase="Save & Rebuild">" />
</TMPL_IF>
</TMPL_UNLESS>
</TMPL_UNLESS>
<input type="submit" value="<MT_TRANS phrase="Save">" />
<TMPL_UNLESS NAME=NEW_OBJECT>
<TMPL_UNLESS NAME=BUILD_DYNAMIC>
<TMPL_IF NAME=HAS_REBUILD>
<input type="button" onclick="doRebuildOne(<TMPL_VAR NAME=ID>)" value="<MT_TRANS phrase="Rebuild">" />
</TMPL_IF>
</TMPL_UNLESS>
</TMPL_UNLESS>
lib/MT/L10N/ja.pm(フォームボタン・メッセージの日本語化)
523行目付近
'Your template changes have been saved.' => '変更したテンプレートを保存しました。',
'Your template changes have been saved and your template has been rebuilt.' => '変更したテンプレートを保存・再構築しました。',
541行目付近
'Rebuild' => '再構築',
'Save & Rebuild' => '保存&再構築',
*1:スタイルシートについては再構築不要なカスタマイズが公開されています(下記)が、本カスタマイズで同様の効果が得られます。
- Magic White:スタイルシートの変更簡単に
- ARTIFACT ―人工事実―:MTでのスタイルシート変更を楽に
- the girlie matters:link that stylesheet(オリジナル)
2005.02.17 追記
インデックステンプレート以外のテンプレート編集画面で「保存&再構築」ボタンが表示される不具合を修正、および typo修正(いずれも tmpl/cms/edit_template.tmpl)。
2005.08.11 追記
元記事のカスタマイズ内容を追加しました。本記事のみで全てのカスタマイズを行うことができます。