さっきの記事はこれを調べていたから故の内容なんですね。
Movable Type 5ではわかりませんが、Movable Type 4では同じ名前のカテゴリやフォルダを追加すると、パスのディレクトリ名が勝手に「_1」とナンバリングされてしまいます。親カテゴリが共通でなくてもそうなります。
まぁカテゴリを登録したあとに、ひとつひとつパスを変更すればいいのですが、追加するたびに修正しなければならないのは面倒だ!!どうにかしろ!!、とのことです(デザイナいわく。いや、そんなこと言ってないですけども)。
で、MTのソースをざーっと追っていってパスを設定しているところを突き止めたのでゴニョゴニョしました。同じことでお悩みのかたは、追記を御覧くださいませ。
ホントはMT本体のプログラムは変更したくない(カスタマイズはプラグインから行うべき!というスタンス)のですが、cms_pre_saveコールバックだと、まだbasenameが設定されておらず、cms_post_saveコールバックだとすでにナンバリングされちゃってるんで、面倒だからしょうがない、という感じです。
扱ったバージョンは、MTOS-4.32-jaです。
972行目に下記を追加。(make_unique_category_basenameメソッドの変数宣言で、親フォルダのIDを設定)
my $parent = $cat->parent; $parent = 0 if !defined $parent;
987行目に下記を追加。(existメソッドの呼び出しに、引数を追加)
parent => $parent,
要は、「同じブログで同じディレクトリ名のカテゴリが存在したらナンバリング」というプロセスを、「同じブログで同じ親カテゴリで同じディレクトリ名のカテゴリが存在したらナンバリング」というふうに変更してあげたということです。
タグ : MT,Movable Type,カテゴリ,パス,フォルダ
2011/03/01 20:08:11 | Trackbacks (0) | Comments (0) | Technology
URL : https://www.ana-kutsu.com/mt/mt-tb.cgi/578
« Movable Type の管理画面のプログラムコードを追う (私的メモ) | Top | WiMAXを使ってみた »