- 2008-12-17 mt4.2以降で動かなくなっていたのを修正
「カテゴリ内の前後のエントリーを自動的にリビルドする」で公開していたRebuildPrevNextInCategory.plにはエントリー作成直後の保存時に動作しないという問題があった。さらに、エントリー削除時にもまともに動作していなかったようだ。原因も追及せずずいぶん長い間放置してしまったいたが、hPodのhiroakiさんが原因を調べてくださり、なおかつ問題を回避した実現方法の提案までしてくださった。まずはhiroakiさんに感謝したい。
さて、それをヒントに、今回あらためてRebuildPrevNextInCategory.plを作成し直した。エントリー作成直後でも、削除時でも動作するはずだ。また、複数のカテゴリーに属する場合はそれら全カテゴリーの前後のエントリーを再構築するようにしている。これで、EntryCategoryLinks以外の複数カテゴリーに対応した「前後のエントリーをカテゴリー内にする」プラグインと組み合わせても使えるようになった。
ついでに、このサイトにおけるカテゴリーのポリシーについて書いておくと、基本的に1つのエントリーは閲覧者に見えるカテゴリーとしては1つのみに属するようにしている。副カテゴリーは注目記事とか、共通のデザインを適用したいとか、カテゴリー横断的にエントリーをグループ化する目的に利用している。ひとつのエントリーが複数カテゴリーに属するという形は、少なくとも静的にファイルを作成するシステムの場合は、ファイルの帰属先が1つに定まらずあまり美しくないと思うのだ。
便利なプラグイン、ありがとうございます。
で、MT3.21-jaでPreviousNextInCategory(複数カテゴリー対応改造済)で使ってみたのですが・・・、
1.エントリー削除時に、各カテゴリーのひとつ前の記事および各インデックステンプレートが再構築されない。
→インデックステンプレートについては仕様?
2.「指定日投稿」機能で投稿すると、各カテゴリーのひとつ前の記事が更新されない。
いずれも、WeblogPublisher.pmを改造する一般的な手法でも同じなので、MT3.21の仕様もしくはこちらの設定の問題かもしれませんが、何か確認すべきことやアドバイスなどありましたらよろしくお願いいたします。
お返事が遅れて大変申し訳ありませんでした。しばらくこのプラグインをはずしていたので、環境を準備してからお答えしようと先延ばししているうちに、時間が過ぎ去ってしまいました。遅くなりましたが、ご質問に順番にお答えしたいと思います。
まず1の削除時の挙動ですが、現状とても中途半端な仕様になってしまってます。前後のエントリーをリビルドするのは、カテゴリーをはずして保存した場合だけです。カテゴリーを変更した場合やエントリーを削除した場合は、リビルドしません。インデックスというかカテゴリーのアーカイブテンプレートもおっしゃるようにリビルドしませんが、これはMTがデフォルトでリビルドするものと思い込んでいたんですよね。確認したところ削除の場合は、MTはデフォルトではメインのインデックステンプレートのみをリビルドするようです。前後のエントリーもカテゴリーアーカイブテンプレートもリビルドしないんですね。どうしてこうなっているかわかりませんが、このプラグインで対応するより、削除時のリビルドを行うプラグインを別途活用した方がいいような気がします。
2の指定日投稿はちょっとわからないですね。このプラグインは保存や削除直後のイベントをひろって駆動するしくみで実現してますが、指定日投稿の場合はイベントが発生しないのかもしれません。
遅くなった上にあまりお役に立てない回答で申し訳ありません。よろしくお願いします。
追記:
指定日投稿のときに前後のエントリーが更新されない理由がわかりました。いえ、正確には前後のエントリーは更新されているんだと思います。ただし、指定した日時ではなく、エントリーを保存したときなんです。そのときにはまだ保存したエントリーは公開されていないので、更新しても内容は変わらないんですよね。これを公開待ちのエントリーでもリンクをはるようにするのは可能で、そうすれば、ちゃんと内容も変更されるはずですが、保存した瞬間に変更されてしまうんですよね。まだエントリーは公開されていないのに、それに対するリンクが先に公開されるのはまずいです。というわけで、少なくとも今の実現方法だと、指定日投稿に対応する難しいです。すみません。
たぶん、MT4.2以降では動かなくなっていたと思うので、直しました。
お返事ありがとうございます。
削除時については、別途プラグインを探してみます。