We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 1144
    • 7 Posts
    テンプレート変数をいくつか作って運用している場合に、AかつBかつCのように、複数の条件で検索をかけられるスニペットやプラグイン、もしくは方法などご存知でしたら、教えてください。

    AjaxSearchを色々いじってみようとしたのですが、どうも上手くいかなくて。。。

    よろしくお願いいたします。
      • 36592
      • 970 Posts
      検索をかけた結果をどう使いたいのかによってもやり方は違うかもしれませんね。
      単純に該当ドキュメントをリスト表示したいだけなら、Ditto(extenderを書くとか)を使えばできるような気がします。
      ここらへんが参考になるかも?
      tvExplorerを使えばできるのかも?

      getFieldというSnippetがありますので、これを使えばそれぞれのドキュメントのテンプレート変数の値は読み出せます。
      力技ですが、自分で1つSnippetを書いて、その中から各ドキュメントをループしながらgetFieldで値を呼び出してチェックすれば、条件に合ったドキュメントID一覧は得られるような気がしますが...

      自分でやってみろと言われると...PHPに詳しくなくてできません。 :’(
        • 1144
        • 7 Posts
        tkfmさん

        情報、ありがとうございます。

        tvExplorer、すごいです!
        まさに望んでいた機能のようです。

        英語は得意でないので、ゆっくり翻訳しながら導入してみます。

        本当にありがとうございます!!
          • 33488
          • 429 Posts
          tvExplorer/tvEditorであれば、ちょこっと使ってみたことがあります。
          サンプルとして、こちらのような感じで
          検索のキーとなるtv変数をドキュメントに書いておいて、それぞれにマッチしたもの(AND検索)が検索結果になります。
          AND検索であれば、AjaxSearchのパラメタuseAllWordsをtrue(任意の値)にすれば、AND検索になります。
          指定しない場合(通常)は、OR検索になります。

            • 1144
            • 7 Posts
            ZeRoさん

            良い感じですね。
            僕の実現したいことも、項目数はもっと多いですが、見せていただいた感じです。

            AjaxSearchって、検索窓を複数設置出来るんですか?
            useAllWordsを1に設定するとAND検索というか、完全一致検索になってしまうんです。
              • 33488
              • 429 Posts
              useAllWordsの件なんですが、最新のAjaxSearch.inc.phpを見ると・・・バグっぽい気が・・・。
              147行目の以下のコード要らないと思われます。(これが完全一致でないとダメにしている原因じゃないかと)
              			$sql .= "(sc.pagetitle LIKE '%{$searchString}%' OR sc.description LIKE '%{$searchString}%' OR ";
              

              この行をコメントアウトしてトライしてみてください(ってテストしないで書いちゃってるσ(・_・))

              もし、普通のコンテンツ内検索でのAND検索をお望みならばの話ですので、tvEditor系でよければスルーしちゃってください。
              あ、もちろんAND検索を希望されているほかのユーザさんはトライしてもらうとうれしいかも・・・