電気ウナギ的○○

About Home

MovableType で、エントリーの公開日を取得する

shinoda (2009年2月19日 00:14)

MovableType で 20個くらいのブログを公開されているお客さんがいらっしゃる。

んで、公開しているブログの一覧ページがあって、それぞれのブログ名の横に、そのブログの最新公開日をわしが作ったプログラムでセットしている。

・・・がバグってた。(^^;

引っ張ってきている日付が公開日ではなく作成日だったのだ。

SELECT A.entry_blog_id AS blog_id,
       MAX(A.entry_created_on) AS release_date
FROM   mt_entry A
    JOIN
       (SELECT entry_blog_id
        FROM mt_entry
        GROUP BY entry_blog_id
        ORDER BY entry_blog_id) B
    ON A.entry_blog_id = B.entry_blog_id
GROUP BY A.entry_blog_id;

という SQL で、それぞれのブログの entry_created_on の一番大きいヤツ(つまり最新の entry_created_on)を取ってきていたんだが、entry_created_on って作成日じゃん。'entry_create' だからな。

だから、2月14日にエントリーを作成すると、作成日には 2009-02-14 がセットされる。
そして、このエントリーを 2月18日に公開すると、公開日には 2009-02-18 がセットされるが、作成日は当然 2009-02-14 のままだ。
なので、2月18日に公開したにも関わらず、ブログの横の最新公開日は 2月14日のままになっていたのだ。

実は、このお客さんは以前は MovableType 3.x を使っており、このプログラムはその頃から使っていたのだがあまり問題にはならなかった。最近、4.x にバージョンアップしてから問題になったのだ。

どうも、(聞いた話なので間違いがあるかもしれないが)3.x の時は、エントリーを公開すると、作成日も公開した日にちに更新されていたようなのだ。
つまり、上の例で言うと、2月18日に公開したら、作成日にも 2009-02-18 がセットされるということだ。だから、作成日を引っ張ってきてても、公開したあとにはちゃんと最新公開日が更新されていたわけである。

ただ、この場合も、作成日を引っ張っていると、まだ公開していないうちから最新公開日が更新されてしまうので、どっちみち問題があるのだ。
公開したのに最新公開日が更新されない場合よりも目立たないので、3.x 時代は誰も日付がおかしいことに気づかなかったのだろう。

mt_entry テーブルで公開日がセットされているのは entry_authored_on だそうだ。

ということで、上記の SQL 文の

       MAX(A.entry_created_on) AS release_date

を、

       MAX(A.entry_authored_on) AS release_date

に変更してOK。
実際の公開日が最新公開日にセットされるようになった。

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/420

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE