WebbingStudio

検索結果で「blog_idパラメータが不正です。」と出てしまう

1

こんにちは。

MovableTypeのデフォルトの検索で
「blog_idパラメータが不正です。」とメッセージが出て、エラーになってしまうようになりました。


・現在の環境はMovableType5.1ですが、MT5から出ていたのではないかと思います。
・文字コードなどは関係なく、シングルバイト・マルチバイト両方で発生します。
・search_templateディレクトリを利用して、代替テンプレートを充てています。

このエラーメッセージで検索したところ、少なくないサイトがこの状態になってしまっているようです。
試しに「blog_id」パラメータを付与してみましたが、解消できませんでした。
この現象と解決策について、ご存知の方はいらっしゃいますでしょうか?

返信(7)

| 返信する
  • こんにちは。


    検索対象の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は以下の通りです。

    <form method="get" action="<$mt:CGIPath$><$MTSearchScript$>">
    	<input type="text" id="search" name="search" size="30" value="" />
    	<input type="hidden" name="limit" value="20" />
    	<input type="hidden" name="IncludeBlogs" value="1,2,3,4,5" />
    	<input type="submit" accesskey="4" value="検索" id="searchbtn" />
    </form>

    代替テンプレートは、config.cgiでこのように定義していました。

    SearchAltTemplate hoge hoge.tmpl


    結果として、今の時点の質問は2点です。

    1:Include_Blogsの値は必須になったと考えて良いのでしょうか?
    2:Include_Blogsを指定した場合、最初の値のブログの検索結果が参照されるようですが、search_templateの代替テンプレートは参照されないのでしょうか?

  • >WebbingStudioさん
    検索フォームのパラメータおよび代替テンプレートについて改めて調査致しました。私の認識が誤っていたようです。
    で、とりあえずの回答ですが、

    1:IncludeBlogsは必須ではありません。
    2:IncludeBlogsを利用しても代替テンプレートは参照可能になると思われます(対処要)。

    いずれも詳細については別途ブログでエントリーしたいと思います。

    ちなみに、デバッグモードで出力されたエラーメッセージは、ブログが指定されていない場合に出力されるエラーです。

  • yujiroさん、記事拝見しました。
    詳細にまとめていただき、ありがとうございます!

    IncludeBlogs未指定時にエラーが出たり
    IncludeBlogs指定時に代替テンプレートを使用できないのは、5.1からの仕様変更ということですね。

    記事にありました通り、コアファイルの編集はリスクもメンテの手数も大きいので
    IncludeBlogsの最初の値に親のウェブサイトを指定して、
    そっちの検索テンプレートを参照する方向にします。

    とりあえず解決しました!

  • >WebbingStudioさん

    ぱぱっと5.1しか確認しなかったので反省なうです。
    無事解決されたようで何よりです。


    >yujiroさん

    いつもためになる記事ありがとうございます。

返信する