こんにちは。
MovableTypeのデフォルトの検索で
「blog_idパラメータが不正です。」とメッセージが出て、エラーになってしまうようになりました。
・現在の環境はMovableType5.1ですが、MT5から出ていたのではないかと思います。
・文字コードなどは関係なく、シングルバイト・マルチバイト両方で発生します。
・search_templateディレクトリを利用して、代替テンプレートを充てています。
このエラーメッセージで検索したところ、少なくないサイトがこの状態になってしまっているようです。
試しに「blog_id」パラメータを付与してみましたが、解消できませんでした。
この現象と解決策について、ご存知の方はいらっしゃいますでしょうか?

こんにちは。
検索対象のblog_idを指定するパラメータは「IncludeBlogs」だと思います。
mt-search.cgi?search=AAA&IncludeBlogs=1&limit=20 でblog_id1のブログからAAAを含む一覧を検索になります。
(意図的にIncludeBlogsのパラメータを外すと同様のエラーを確認できます)
検索フォームからIncludeBlogsのパラメータが渡されていないのではないでしょうか?
>WebbingStudioさん
takahiroさんの回答で解決しない場合、システム管理画面の「設定」→「全般」→「デバッグモード」に「1」を設定するか、mt-config.cgiに
DebugMode 1
を設定して実行すれば、より詳細なエラーが表示されると思いますので、エラーメッセージをご連絡いただければ原因が特定できると思います(ソースコードをトレースしたところ「blog_idパラメータが不正です。」というエラーが発生するケースがいくつかあるようです)。
併せて、エラーが発生したときにブラウザのアドレスバーに表示されているURL(mt-search.cgiも含めた後方の部分)もご連絡いただければと思います。
こんばんは、ありがとうございます。
エラーが発生したときのURLは以下の通りです。
mt-search.cgi?search=webbingstudio&limit=20
デバッグモードではこのようなエラーが出ました。
Use of uninitialized value in numeric gt (>) at lib/MT/App/Search.pm line 133.
システム内の全ブログを対象としたかったので、
これまでこのページにある通り、IncludeBlogsを省略していました。
http://www.movabletype.jp/documentation/mt5/design/search/
そこでIncludeBlogsを明示したところ、
今度は代替テンプレートを参照しなくなってしまったので、1のブログの検索用テンプレートに
代替テンプレートの内容をコピペして、とりあえず対処しました。
URLはこれです。
mt-search.cgi?search=webbingstudio&limit=20&IncludeBlogs=1%2C2%2C3%2C4%2C5
また、検索フォームのHTMLは以下の通りです。
代替テンプレートは、config.cgiでこのように定義していました。
SearchAltTemplate hoge hoge.tmpl
結果として、今の時点の質問は2点です。
1:Include_Blogsの値は必須になったと考えて良いのでしょうか?
2:Include_Blogsを指定した場合、最初の値のブログの検索結果が参照されるようですが、search_templateの代替テンプレートは参照されないのでしょうか?
>WebbingStudioさん
検索フォームのパラメータおよび代替テンプレートについて改めて調査致しました。私の認識が誤っていたようです。
で、とりあえずの回答ですが、
1:IncludeBlogsは必須ではありません。
2:IncludeBlogsを利用しても代替テンプレートは参照可能になると思われます(対処要)。
いずれも詳細については別途ブログでエントリーしたいと思います。
ちなみに、デバッグモードで出力されたエラーメッセージは、ブログが指定されていない場合に出力されるエラーです。
>WebbingStudioさん
下記の記事をエントリーしました。
http://www.koikikukan.com/archives/2011/11/27-003333.php
http://www.koikikukan.com/archives/2011/11/28-005555.php
yujiroさん、記事拝見しました。
詳細にまとめていただき、ありがとうございます!
IncludeBlogs未指定時にエラーが出たり
IncludeBlogs指定時に代替テンプレートを使用できないのは、5.1からの仕様変更ということですね。
記事にありました通り、コアファイルの編集はリスクもメンテの手数も大きいので
IncludeBlogsの最初の値に親のウェブサイトを指定して、
そっちの検索テンプレートを参照する方向にします。
とりあえず解決しました!
>WebbingStudioさん
ぱぱっと5.1しか確認しなかったので反省なうです。
無事解決されたようで何よりです。
>yujiroさん
いつもためになる記事ありがとうございます。