MovableType: 2009年2月アーカイブ

mapping.GIF

MovableTypeの話。

アーカイブの再構築ができないブログがある。

再構築をしようとしたら

ブログ記事「ほげほげほげ」の再構築中にエラーが発生しました:
テンプレート「日付アーカイブ」の再構築中にエラーが発生しました:
<mtCategories>タグでエラーがありました:
<mtCategoryArchiveLink>タグでエラーがありました:
カテゴリアーカイブを公開していないので<$MTCategoryArchiveLink$>は使えません。

とエラーが出て再構築中断となる。

で、このブログ、何かよくわからない。

新しいアーカイブのマッピングをしようとしたら、種類のところに普通は「日別」「週別」とかアーカイブの種類の一覧が出るはずなのに、「ブログ記事」としかでない。(画像参照)

なんでぇ?

MovableType 3 から 4 にバージョンアップしたブログだが、同時に作業した他のブログは正常にプルダウンにアーカイブタイプが表示される。

うーん・・・
この情報ってどこからとってきてるんかなあ。
とりあえずググってみたけど、同じような現象に悩んでるケースは見つからなかった。相当特殊な現象なんかなあ。

denki_unagi.jpg

俺のメインブラウザは FireFox なんだが、ブログの更新だけは InternetExplorer を使っている。

なぜなら、「なんでか知らんけど、FireFox じゃあ、プルダウンメニューが開かんのんじゃもん」というのが理由。

上の画像の左側が FireFox のもの。右が IE だ。

ねっ!FireFox じゃあ、一応オンマウスでメニューの色は変わってるけど、プルダウンメニューが開いてないでしょ。

この話をたまたま今日お客さんと打ち合わせをしているときにしたんだけど、「ええ?マジっすか?」という話になって、その場で FireFox でお客さんのブログ(MT4.x)の管理画面を開いてみたら・・・ちゃんと動くんでやんの。(^^;

ありぃ?(^^;;;;;

FireFox のバージョンはうちと同じ 3.0.6 だった。
ただ、MovableType 4 の細かいバージョンがわからないので(うちは、MTOS 4.23-ja)、もしかしたら MT のバージョンによって問題が出る可能性があるのかもしれない。
・・・ま、MTOS も最新バージョンだし、それはあり得ないだろうが・・・

しっかし、ブログ書くときだけ IE を立ち上げるのは面倒くせぇ!!

<追記>
ちなみに、Vista Business SP1 のデスクトップパソコンの FireFox 3.0.6 でも、XP Professinal SP3 のノートパソコン上の FireFox 3.0.6 でも同じ現象が起きているので、特定のパソコンだけの問題ではないようです。
MTOS 4.23-ja との相性が悪いのか・・・それとも、FireFox の方で、設定変更の必要があるのか・・・
識者の人、教えてぇ!!

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。
実際の公開日が最新公開日にセットされるようになった。

mterror20090212_1.gifのサムネール画像

むむむ。

MT3 系から MT4 系(MTOS 4.23-ja)にバージョンアップしたブログがあるのだが、

1.ブログ記事の編集中に「確認」ボタンを押すと、「Can't call method "entry_based" on an undefined value」というエラーが出てしまう。

2.カテゴリー・アーカイブ(category/sub_category/index.html)の編集中に「保存」または「確認」ボタンを押すと、「不正な要求です。」というエラーが出てしまう。()

という2点の問題が発生している。

1については、「MTタグの ArchiveTitle を EntryTitle に変更すればOK」という情報を見つけたのだが、影響が大きいので取りあえず保留。(どうも、ArchiveTitle を EntryTitle に単純に変更しただけでは、再構築時に「<mtEntryTitle>タグでエラーがありました: mtEntryTitleをコンテキスト外で利用しようとしています。MTEntriesコンテナタグの外部で使っていませんか? 」というエラーが出るらしいし)

2については、テンプレートを作られた方にもう一度最初からテンプレートの新規登録をしてみていただくようお願いしている。そこで、もう少し内容の分かり易いエラーが出れば・・・と思っているのだが。(「不正な要求です。」ではあんまりだ)

ちなみに、2の問題については、<html><head><body>タグだけのような単純なテンプレートに置き換えてみても同じエラーが出た。そのため、テンプレートの内容が問題ではなく、「Shift_JIS のデータ(日本語のカテゴリ名)が問題」というようなややこしい話になっちゃうかも・・・というヤな予感も・・・

<追記>
やっぱ、日本語のカテゴリの無いブログでやっても同じエラーが出るので、日本語の問題じゃないんだろうなあ。