記事の削除で使われなくなったエントリーIDを復活させて記事を投稿する。
Movable Type では,記事を削除するとその記事に使われていたエントリーID (記事番号) は再利用されない。MT 3.0 以降 (?) のデフォルト設定では,日付のついたファイル名でアーカイブされるため,エントリーIDの「抜け」はあまり気にならない。しかし,MT 2.661 までの個別記事はエントリーIDのついたファイル名で作成されるため,抜けがあると気になる。気になる人がいる。というよりも,私が気になっていた (nlog(n): エントリの総数を表示するには)。
削除されたエントリーIDは,API を使って投稿すれば復活させることができる (Movable Type オブジェクト・リファレンス - MT::Entry)。つまり,好きなエントリーIDで復活させることができるので,DB が飛んでしまった場合でも頑張れば HTML から DB を復元することができる (HTML から weblog を復旧する方法 - bricklife.weblog.*)。
環境は Movable Type 2.661 + 日本語パッチである。MT3 以降でも同様の手続きが可能だろう。
そこで,Perl スクリプトを書いた。エントリーID「50」で投稿するもので,この記事そのものがその例となっている。ライブラリのパス,ブログID ($BLOG_ID),投稿者ID ($AUTHOR_ID),エントリーID ($ENTRY_ID) を適宜セットする。MT3 以降の場合は,設定ファイル名を「mt.cfg」から「mt-cfg.cgi」に変更する必要がある。
タイトルは「My title」,エントリーの内容には「Some text」が入った記事が生成される。時刻は実行した時刻が入る。データベースだけが更新されるだけなので,まだ投稿としては完了していない。MT の管理画面を開いて「保存」ボタンで再構築する必要がある。
再構築する前に2度このスクリプトを実行しない方がよい。実行すると,記事が消えたように見えるので注意が必要である。原因は,再構築しないと作成日時に値がセットされないからである。もし見えなくなってしまった場合は,管理画面から「投稿の状態」が「下書き」であるものを検索すれば見つけることができる。作成日時は「--::」というあり得ない値となっているはず。
次の記事からは,エントリーIDと投稿数が一致するはずである。…だから何が嬉しいかと言われると苦しいのだが。
Posted by n at 2007-11-19 20:23 | Edit | Comments (0) | Trackback(0)
Master Archive Index
Total Entry Count: 1957