MT3.32が出ていたので、ダウンロードしてテスト環境で動作確認してみました。3.31ではダイナミックで<$MTArchiveCount$>が正しく出力されないバグがあったので、それが直っていればいいなと思って。その結果、この問題は解決していることが分かり、それではとさっそくWingMemoの方もアップグレードしたのですが、その後になってダイナミック・パブリッシングにて重大なバグがあったことが判明。
月別アーカイブで次の月へのリンクが全部最新月へのリンクになってしまうのです!
2006年7月の次の月が2006年8月なのはいいとして、2006年6月の次の月も2006年8月。2006年5月も4月も前の年の何月であろうとも次の月は全部2006年8月になってしまいます。ある意味、これは3.2時代のバグよりも酷い…(泣)。
何より困ったのが、フォトログにてPHP PreviousNextInCategoryというプラグインを使って同一カテゴリーでの前後リンクを表示していたのが、これも日付アーカイブと同じ現象になってしまい、次のエントリーへのリンクが全部そのカテゴリの最新エントリーになってしまいます。これでは前後リンクの意味をなさない~~。
<$MTArchiveCount$>が直ってもこれでは使い物にならないので、しかたがなく、いったん3.31に戻しました。それにしてもバージョンアップのたびにいつもダイナミックのどこかがおかしくなるのは、何とかしてもらえないでしょうか…。新機能が上手く動かないならまだしも、これまで正常に機能していたものがバージョンアップしたがために使えなくなるのは本当に困りますので(しかも毎回、基本中の基本のタグで…)。よろしくお願いします、sixapart様…。
<追記&修正方法>
バグの正体を突き止められたと思われるので、修正してみました。どうやら犯人は「phpフォルダ>libフォルダ」の中の mtdb_base.php のようです。
ダイナミックのバグならphpフォルダ以下にあることは間違いないので、今回のバージョンアップで更新されたファイルを1つ1つ3.31のファイルと置き換えながら動かしてみたところ、mtdb_base.php でピタリ。3.31と3.32で違うところを調べてみたところ、3.32で記述が抜け落ちている部分と追加された部分がみつかりました。追加部分は恐らく今回の修正箇所。となると抜け落ちている部分は…? 怪しい…。
で、抜けていた部分を追加してみたら月アーカイブの前後リンクが正しく動作するようになりました。個別頁内の同一カテゴリへの前後リンクも正しく動作するようになりました。よかった~。正式に直るまではこれでしのぐことにします。以下、修正箇所です。mtdb_base.phpの536行と537行の間に以下の赤字の部分を追加します。
if (count($filters)) {
$post_select_limit = $limit;
$post_select_offset = $offset;
$limit = 0; $offset = 0;
}
$sql = "
↓
if (count($filters)) {
$post_select_limit = $limit;
$post_select_offset = $offset;
$limit = 0; $offset = 0;
}
if ($args['sort_order']) {
if ($args['sort_order'] == 'ascend') {
$order = 'asc';
} elseif ($args['sort_order'] == 'descend') {
$order = 'desc';
}
}
$sort_field or $sort_field = 'entry_created_on';
$sql = "
ということで、無事MT3.32へアップグレードすることが出来ました。やっぱり<$MTArchiveCount$>は正しく出てくれた方がいいので…(もし、そこ間違ってるよーとかいうところがあれば教えてやって下さい)。
<追記2 2006.9.1>
この記事を書いたときは慌てていたのでそこまで気が回らなかったのですが、このバグは月別アーカイブ(日付アーカイブ)だけでなく、エントリーアーカイブにまで及んでいます(フォトログのカテゴリ内前後リンクがおかしくなったのもそのためです)。つまり<MTEntryNext>と<MTArchiveNext>が壊滅状態ということです。ここまでいくと運営への影響も大きいと思われるので、ダイナミック使用で3.32へアップグレードされた方・3.32から始めてダイナミック化しようとされている方はこの修正を行っておくことをおすすめします。
この修正が必要なバージョン:3.32 3.33 3.34 3.35
コメント
Y | 2006年10月11日 02:05
こんにちわ!以前(つい最近です)に、ムーバブルの幅の変更の仕方をおしえて頂いたものです。
上記の修正を早速やろう!と試みようと思ったのですが、
mtdb_base.phpがどこなのか、わかりません!!!
ほんと初心者質問で、申し訳ありませんが、ご指導お願いいたします。
TAEKO | 2006年10月11日 11:56
ダイナミック・パブリッシングをお使いですか?
この修正はダイナミックを使ってない場合は必要ないものなので…。
mtdb_base.phpの位置は「php/lib/mtdb_base.php」です。
まずはphpというフォルダを開いて下さい。その中にlibというフォルダがあります。mtdb_base.phpはそのlibフォルダの中にあります。修正の前には念のためにmtdb_base.phpのバックアップをとっておくといいと思います。そうすれば間違えた時でもバックアップからコピーしてきて何度でも修正し直せますので。それではよろしくです。
Y | 2006年10月12日 13:18
アドバイスありがとうございました!!
ほんとド素人で、すみません。
ダイナミック・パブリッシングは使用してないと思うので、
これに関しては、問題なさそうです。
初心者質問に、親切にお答え頂き、大変ありがとうございました。
TAEKO | 2006年10月13日 13:59
そうでしたか~。
もし3.3でダイナミック・パブリッシングを使われることがあったら、その時また参考にして下さいね。
eriko | 2007年1月 9日 15:07
わたしの悩みが解決できました。うれしいです。
ありがとうございました。
TAEKO | 2007年1月10日 00:14
>erikoさん
コメントありがとうございます。
ダイナミックお仲間なのですね!
お役に立てたようで嬉しいです。次のバージョンでは直ってるといいですよね。
G | 2007年1月19日 11:07
私もこちらのおかげで、不具合が解決できました。本当にありがとうございます♥。(レス不要です)
TAEKO | 2007年1月20日 12:20
>Gさん
レス不要とのことですが、コメントありがとうございました♥
お役に立ててよかったです。
Fumiaki Yoshimatsu | 2007年1月24日 18:36
TAEKO様
シックス・アパートでMovable Typeの開発をしております、吉松と申します。
本件、実はMovable Type Enterprise 1.5では修正されております。ただし、その後Movable Typeの新バージョンを出すことができないまま、セキュリティFixなどが立て続けに行われたこともあり、MTEに入れた(セキュリティなどに比べると比較的)重要度の低いコードを3.x系に完全に取り込むことができないまま現在に至っております。
Movable Typeの開発は公開リポジトリで着実に進んでおりまして、新バージョンのベースとして開発されているコードネーム:Wheeljackというバージョン[1]では、本件も修正されています。ただ、Movable Typeの次のバージョンをいつ出荷できるか未定であるため、正式リリースに本件の修正コードが含まれるのがいつになるか、お約束することができません。ご迷惑をおかけして申し訳ありませんが、なにとぞご了承いただけますようにお願い申し上げます。
別途、フィードバックをいただいたメールアドレス宛にも返信いたします。そちらもご高覧いただければと思います。
[1] http://www.sixapart.jp/techtalk/2006/11/movable_type_wheeljack.html
TAEKO | 2007年1月25日 10:36
>シックス・アパート 吉松様
このようなサイトにコメントとメールで回答いただきありがとうございます。
ここで載せているコードは必要に迫られて行った自己判断修正でしたが、それも内容確認していただき、「Wheeljackで行われている修正内容とほぼ同じであり、動作しているならそのまま使って問題ない」とのことでホッとしております。
メールからも詳しい説明をいただき、事情はよく分かりましたので、当面はこの仮修正でしのぎなら正式に直るのを気長に待たせていただくことにしようと思います。
本当にありがとうございました。
助かった人 | 2007年1月28日 00:25
ありがとうございます。
おかげで修正できました。
TAEKO | 2007年1月28日 15:27
>助かった人さん
コメントありがとうございます。
少しでもダイナミック仲間のお役に立ててよかったです。
やまだ | 2007年1月30日 10:41
とても参考になりました。情報ありがとうございます。
v3.34 で試しました。普通の設定だと問題無く修正されますが、管理画面の [設定 (詳細モード)] > [表示に関する初期設定] > [エントリーの表示順] で [昇順] を選んでいる場合は教えて頂いたコードを追加してもうまくいかないみたいですね。NextMonth が最新月を指すのではなく、PreviousMonth が一番始めにエントリーを記入した月を指すようになりました。。
この状況での回避法は以下の通りです。
# 少なくとも私の環境で問題なく動作しました。
0. mt_db.php に修正コード追加
1. 管理画面の [設定] で [昇順] を [降順] に設定
2. メインページのテンプレートの <MTEntries>にアトリビュート sort_order="ascend" を追加
ブログで表示順を昇順にする事もあまりないと思いますが、ご参考になれば幸いです。
TAEKO | 2007年1月30日 13:12
>やまださん
情報ありがとうございます。
エントリーの表示は管理画面の設定は使わず、テンプレートにlastnやsort_orderを書く事でコントロールしていたので、これには気がつきませんでした。
シックス・アパートからいただいたメールにはWheeljackの修正は「ブログの設定で既定の表示数などが変更された場合にも対応している」と書かれてあったのでこのことだったのでしょうかね。
どちらにしろエントリーの表示に関しては、テンプレートタグで設定できることは出来るだけそちらを使うようにした方がよさそうですね。私も気をつけてみようと思います。
☆<MTEntries>が消えていたので出しておきました。半角の<>で囲むと消えてしまうので(^^;、Comments横のアイコンで文字参照に置き換えられるといいです(プレビューで確認できます)。
やまだ | 2007年1月31日 01:41
> <MTEntries>が消えていたので出しておきました。
をを、何も考えずに書いておりました。修正ありがとうございます。(_ _)
TAEKO | 2007年1月31日 10:54
>やまださん
はい、これからもよろしくお願い致します。^^
ファズ研 | 2007年2月 6日 06:07
はじめまして。
先日バージョンアップしてから、このバグに悩まされておりました。
おかげ様で解決できました。ありがとうございます。
TAEKO | 2007年2月 6日 11:00
>ファズ研さん
お役に立ててよかったです。
ダイナミックを使われる人も増えてきているようで私も嬉しいです。
*mieko | 2007年6月30日 22:42
初めまして!本当にどうしようもない素人です。
アーカイブページの分割がしたいのに、どうしてもできません。
再構築オプションを「アーカイブのみダイナミック・パブリッシングで出力します」に設定しました。
再構築時に時間がかからなくなったことだけは確かです。バグも修正させていただきました。ありがとうございました。
こちらの「ダイナミックパブリッシングで分割」と言う項目も読ませていただきましたが、頭が悪いのかうまくいきません。
また落ち着いて頭を冷やしてから、挑戦します。
TAEKO | 2007年7月 1日 00:33
いらっしゃいませ、*miekoさん。
お役に立てたようでよかったです。
分割に関しては後からメールの方へ返事させていただきますね。よろしくお願い致します。
もんぷち | 2007年7月 1日 22:48
私もダイナミックパブリッシングを使って
みようと、チャレンジしているのですが、
エラーが出て悩んでいます。
環境は、
IIS6.0 + MT3.34 + MySQL5 + PHP5.2.3
で、マニュアル見て新規インストールしまし
た。
新しく出来上がったページに、1個エントリー
を書いてから、ダイナミックパブリッシング
を有効にしたのですが、ダイナミックで出る
はずのアーカイブリンクを開こうとすると、
「Directory Listing Denied」
「This Virtual Directory does not allow contents to be listed.」
というエラーが出てしまい、内容が見れませ
ん。スタティックに戻して再構築すると、
スタティックとして見れるようになりますが、
ダイナミックにすると、同じエラーとなります。
今回だけ、権限をすべてフルコントロール
などにしてみたのですが、変わらずです。
バージョンも
MT3.34 + PHP4.4.7 + MySQL4 にダウン
させてみたのですが、エラーメッセージは
変わりませんでした。
PHPが動作していないのかと思い、
phpinfo()だけを書いたPHPを読ませてみ
ると、ちゃんと開けているようです。
IISをApacheにしてみるという手もありますが
そこまで元気が・・・
どこか私の設定に問題とかあるのでしょうか?
TAEKO | 2007年7月 2日 10:03
もんぷちさん、初めまして。
もしかして自宅サーバーの方でしょうか?
ダイナミック・パブリッシングにはmod_rewriteが必要なのですが、それは入っていますでしょうか。
自宅サーバーに関しては詳しくないので、見当違いのことを言っていましたら申し訳ありません。
もんぷち | 2007年7月 8日 16:31
はじめまして。お返事ありがとうございます。
mod_rewriteを探してみたら、IISの場合は
有料なんですね。
その前に、Apacheで試してみようと思います。
お返事遅れましてすみませんでした。
TAEKO | 2007年7月 9日 09:38
>もんぷちさん
ダイナミック、上手くいくといいですね。
動くようになったらいろいろカスタマイズなども楽しんで下さいね。
だるま | 2007年8月26日 00:59
TAEKOさん、はじめまして。
シックスアパートの吉沢さんに教えてもらってここを拝見させてもらっています。今夜は遅いのであきらめて明日修正してみます。
レベルアップがあると新たなバグがでるのがソフトなので、私は3.31を使ってきましたが、サーバーを移行しようと思って3.35を使い始めたら、この問題にぶつかってしまいました。ダイナミックだけでなく、スタティックでも発生しています。
それにしても一年近くも修正されず、サポート打ち切りというのは、これまでの利用者泣かせですね。オープンソース(たとえばWordpress,OpenPNE)だと開発者、運営者、利用者が情報を持ち寄り助け合って数日で解決するのがふつうなんですがね。やはりCAACの時代ですね。
MTは3.31までしか知りませんが、比較的安定して大きな問題にはあわなかったんですが、3.32あたりからおかしくなってきたようですね。私は3.31にもどりました。4.0のゴテゴテ機能は要らないし、一年のサポートのために数万円も出す気はないので、できれば3.35を使い続けるつもりです。
修正を試みたら、結果を報告させていただきます。お世話になるかもしれませんがよろしくお願いいたします。
TAEKO | 2007年8月26日 11:09
だるまさん、はじめまして。^^
ここはもう4.0に移行してしまったのですが、3.32~3.35をお使いの方のお役に立てれば嬉しいです。
このバグの修正は4.0でなされているので、バグを承知で3.35を使い続けるか、バグが直った4.0に移るかは考え方次第でしょうね。
非商用の個人サイトなら無償の個人ライセンスが使えますよ。私はずっと無償版でやってきたので、サポートって受けたことがないです(^^;。でもそれで困ったことはないですし、MTならWEBにも情報いっぱいありますし。
私のサイトで何かお役に立てることがありましたら、どんどん利用してみて下さい。
こちらこそよろしくお願いいたします。
だるま | 2007年8月26日 19:31
Taekoさん、
ありがとうございました。
お教えのとおりに修正したら、文字通り3分で解決しました。感謝、感激です! 悩んでいたことが解消できたときはうれしいものですね。
先のコメントで、吉松さんの名前を間違えて書いてしまいました。ここで訂正してお詫びします。
私は企業内ブログ検討のために個人サイトで無償版を使い出し、複数ユーザの評価も必要なので有償版を購入しました。それ以来、個人サイトで自分の備忘録代わりに使ってきました。最初のころに、何度か質問しましたが、ここ2年はサポートも受ける必要がありませんでした。
正直いってMTにするかWordpressにするかで迷っています。知人たちから何がいいと聞かれることが多いのですが、それぞれ一長一短ですから、自分でもどれがいいのか分からないから答えようがない(笑)
企業内ブログでは数百万円の投資ができるので、MTにしましたが、個人用はそうはいきませんし、それなりのサポートがないと知人には薦められませんよね。
このWingMemoをすこし読ませてもらいました。すごいですね!MTに関してはここを参照させてもらえばほとんど解決すのじゃないかな。使い方についても、Taekoさんの具体的な体験にもとづいて、いろいろ分かりやすく書いてあるのでいいですね。
私は4.0には機能的な魅力を感じないし、個人サイトは親しい友人にURLを教えるくらいで、半分評価が楽しみでやっていますから、しばらくは3.5で十分と思っています。分からないことがあれば、ここにきますのでよろしくお願いします。
あっ そうそう MTというかシックスアパートの対応で刺激されたことをブログに書きますが、批判的な内容ですが、MTは気に入っており好きですので、もし読まれても誤解されないように・・・と言い訳をしておきます(笑)
だるま | 2007年8月26日 19:36
いま、コメントを投稿しようとPOSTをクリックしたら、
Script Error
The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run thisscript under CGIWrap debugging. Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or add a AddHandler cgi-script-debug .cgiline to your .htaccess file.
というメッセージが出ました。ブラウザーで戻ったら、幸い入力した内容は残っていて、再度POSTしたらOKでした。あんまりコメントが長かったり時間が経つとセッション情報が失われるからなのでしょうか。
TAEKO | 2007年8月27日 00:14
>だるまさん
解決のお役に立ててよかったです。^^
私がMTを使っているのは、自分のサイトで使うのに必要な機能があるからです。MTのいいところはどんなデザインでも好きなだけ自由に構築できるところですよね。Wordpressにはそこまでの機能がないように思うので…。
あれ、エラー出ましたか? たいがい投稿は出来てるんで気にしないでやって下さい(^^;。
自分の覚え書き用ブログですけど、参考になるところがあれば幸いです。
私で分かることでしたらお答えしますのでよろしくです。
おおがみ | 2007年11月25日 17:29
はじめまして。
突然ですが、これは、助かりました・・・
苦労が報われたとはこのことです。
ありがとうございました。
TAEKO | 2007年11月26日 09:05
>おおがみさん
こちらこそ初めまして。
今でも3.32~3.35使いの方のお役にたてているようでよかったです。