『MT 3.2-ja-2:「エントリー・ファイル名」が勝手に変わる』の続き
『MT 3.2-ja-2:「エントリー・ファイル名」が勝手に変わる』の続きになりますが、バージョン 3.2 で色々試したので書いてみます。
以前の記事の最後にも書きましたが、この問題は旧バージョンでも起こっていたようなんですが、バージョン 3.17 で解決済みとの事でした。
Six Apart - Movable Type サポート: Movable Type 3.17の修正点
じゃ、何でいまさら復活したのかって事なんですが、「Movable Type 3.2 の新機能:エントリー・アーカイブのファイル名のカスタマイズ」ってのが原因っぽいです。
Movable Typeユーザー・マニュアル: Movable Type 3.2 の新機能
問題の部分は、編集フォームの下部にある「エントリー・ファイル名」ってところです。
ソースは
<input type="text" size="18" disabled="disabled" name="basename" id="basename" value="" onchange="setElementValue('basename', dirify(this.value))" tabindex="11" />
となっており、disabled が有効になっているので初期状態では無効になっています。
この状態だと、編集できないだけでなくフォームを送信したときの情報にも含まれないので、「確認」ページに値が引き継がれないためにパーマリンクが書き換わるみたいです。
単純な解決方法としては、/tmpl/cms/edit_entry.tmpl の455行目(だいたい)
<input type="text" size="18" disabled="disabled" name="basename" id="basename" value="<TMPL_VAR NAME=BASENAME>" onchange="setElementValue('basename', dirify(this.value))" tabindex="11" />
から disabled="disabled" を取って、
<input type="text" size="18" name="basename" id="basename" value="<TMPL_VAR NAME=BASENAME>" onchange="setElementValue('basename', dirify(this.value))" tabindex="11" />
としてあげればいいんですが、これにも問題があります。
この方法だと、「確認ページで保存するとエントリー・ファイル名が勝手に変わる」という問題は回避できますが、常に「エントリー・ファイル名」(basename)が有効になってしまうので、新規エントリー時に既存のエントリーファイル名とバッティングする可能性が出てきます。
ということで、いろいろ試した結果、
<input type="hidden" name="basename" value="<TMPL_VAR NAME=BASENAME>" />
を
<input type="text" size="18" disabled="disabled" name="basename" id="basename" value="<TMPL_VAR NAME=BASENAME>" onchange="setElementValue('basename', dirify(this.value))" tabindex="11" />
の後に記述することで行けそうです。
こんな感じ?
<input type="text" size="18" disabled="disabled" name="basename" id="basename" value="<TMPL_VAR NAME=BASENAME>" onchange="setElementValue('basename', dirify(this.value))" tabindex="11" /> ・・・(省略)・・・
<input type="hidden" name="basename" value="<TMPL_VAR NAME=BASENAME>" />
Firefox でしか試してないですが、今のところ問題ないっぽいです。
(しばらく様子見・・・)
コメント