星

CustomFieldsSearchで空検索

0

お世話になります。
わかる方がいましたらご教授願います。

MT6にCustomFieldsSearchを実装しました。
カスタムフィールドの内容もきちんと検索に
ヒットされているのを確認したのですが、
検索欄を空で検索したときに、
「CustomFieldsSearch」で検索されたことに
なってしまいます。
うまく実装されていないということでしょうか。

CustomFieldsSearch1.1.1を実装しました。

formタグの中はこのように記述しています。

<form method="get" id="search" action="">
<input type="hidden" name="CustomFieldsSearch" value="1">
<input type="hidden" name="CustomFieldsSearchField" value="ProductsName">
<input type="hidden" name="CustomFieldsSearchField" value="ProductsAuthor">
<mt:If name="search_results"><input type="hidden" name="IncludeBlogs" value="<$mt:SearchIncludeBlogs$>"><mt:Else><input type="hidden" name="IncludeBlogs" value="<$mt:BlogID$>"></mt:If>
<input type="hidden" name="limit" value="10">
<input type="text" name="search" id="search_txt" class="side-search--input" value="<$mt:SearchString$>" placeholder="検索">
<input type="submit" name="button" id="search_submit" value="検索" class="side-search--bt">
</form>

返信(4)

| 返信する
  • プラグインのソースコードを読むと以下のような記述がありましたので、検索語句を指定せずに検索を実行すると、「CustomFieldsSearch」というキーワードで検索したことになるのは仕様のようです。

    if ( is_empty_search($app) ) {
        $app->param( 'search', 'CustomFieldsSearch' );
    }

    対策の一例としては、以下のように検索語句の入力があったか否かを判定する方法が考えられます。

    <mt:If tag="SearchString">
    <p>「<$mt:SearchString$>」と一致する結果は見つかりませんでした。</p>
    <mt:Else>
    <p>検索語句が指定されていません。</p>
    </mt:If>

  • Hideki Abe様

    ご返信ありがとうございます!
    うまく実装されてないのかと心配だったのですが
    仕様だったのですね。

    ライセンス的に
    if ( is_empty_search($app) ) {
    $app->param( 'search', 'CustomFieldsSearch' );
    }
    を削除しても問題はなさそうなので
    削除することも念頭にいれつつ、
    条件分岐で対応できるか試してみたいと思います。

    ありがとうございました!

  • if ( is_empty_search($app) ) {
    $app->param( 'search', 'CustomFieldsSearch' );
    }

    をコメントアウトして、検索欄を空で検索した結果
    思う通りの状態になりました。

    もう一つ、バグらしきものを発見したのですが、
    検索がヒットしたときが
    誤作動を起こして、検索がヒットしているにも
    かかわらず、の内容が出力
    されていました。

    CustomFieldsSearchを利用不可にしたら通常通りの
    動作になったのでCustomFieldsSearchに問題がありそうです。

  • タグがきえていました。

    検索がヒットしているにもかかわらず、NoSearchResultsの内容が出力
    されてしまうというバグらしき挙動が出ました。

    sub _hdlr_no_search_results {
    my ( $ctx, $args, $cond ) = @_;
    return 1 unless is_empty_search();
    $ctx->stash('count') ? 0 : 1;
    }

    上記をコメントアウトしたうえで、SearchResultCountで
    条件分岐することで対応できました。

返信する


カテゴリグループ

フォーラムカテゴリー

21 76

最新のトピック: 公開終了日の取り消し (2013年10月18日 gsk)

303 875

最新のトピック: mt.cgiにアクセスできない (2015年6月24日 みや)

231 698

最新のトピック: CustomFieldsSearchで空検索 (2015年6月24日 )

154 454

最新のトピック: MT6.1 のフォルダ管理について (2015年4月 7日 yokota)

343 991

最新のトピック: 再構築に時間かかりすぎ? (2015年6月25日 tani)

OpenID対応しています OpenIDについて