We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 19592
    • 56 Posts
    Ajax Search の検索結果ですが、作ったばかりのページが検索結果の一番最後に表示されます。
    どうもドキュメントIDの昇順(若い順)に表示しているようですが、これを変更する方法はないでしょか?

    公開日の降順(新しいものから表示)か、せめてIDの降順(ナンバーの大きい順に表示)にしたいのです。

    英語のwikiをざっとみてみましたが、sortに関するパラメーターは見つかりませんでした。
    普通検索結果って最新の物から表示すると思うのですが、みなさんどうしているんでしょう?? huh




      • 33463
      • 35 Posts
      初めまして。

      検索窓つけっぱなしで自分では動く確認しかしてなかったので今気付きました^^;
      確かに古い順で表示されますねぇ。
      パラメータも無いしこりゃ困った鴨。
        • 19592
        • 56 Posts
        zephyrさん こんにちは。

        やはりうちだけではなかったのですね^
        検索結果が5個程度ならともかく、数多くなると、古いものから表示では不便だと思うんですけどねぇ。
        なんとかできないかなー
          • 33488
          • 429 Posts
          ソートの機能はないみたいですねぇ。
          メインのサポートにも1つしか挙げられてないようですので、あまり使われてないのか特に気にしてないのか分かりませんがあちらにもレスがついてないようです。
          ということで、実験していませんが・・
          AjaxSearch.inc.phpのDoSearch関数の以下の部分にソートの指定をすればいけるんではないかなと思います。
          		$sql .= $qry_sql . "sc.published = 1 AND sc.searchable=1 AND sc.deleted=0;";
          

          を
          		$sql .= $qry_sql . "sc.published = 1 AND sc.searchable=1 AND sc.deleted=0 ORDER BY sc.id DESC";
          

          のように、ORDER BYでキーとソート順を指定すればよいかと。
          上記の例だとドキュメントIDが番号が大きい順(新しいドキュメントから)になります。
          ORDER BY sc.createdon DESC だと生成された日付の新しい順とかになります。

          上記に該当する行が2箇所ありますが、searchStyle == ’partial’ の方で使っていると思うので最初の行の方だけでよいと思います。

          うまくいったら報告してくださいな

            • 19592
            • 56 Posts
            ZeRoさん
            ありがとうございます!
            仰る修正でぶじ解決しました。
            ID、createdon ソート問題なく動きます。

            $sql .= $qry_sql . "sc.published = 1 AND sc.searchable=1 AND sc.deleted=0 ORDER BY sc.pub_date DESC";


            として、公開日ソートもうまくいきました smiley

            しかしサポートにもないということは、みんな気にしてないんでしょうかね~。 ^^;
            ちょっと不思議です。
              • 33463
              • 35 Posts
              おはようございます。

              私の方でも確認しました。
              バージョン1.6ではZeRoさんの変更を適用してOKですが、バージョン1.7.1ではdoSearch関数も変更されており
              ↓の似たようなコード部分にORDER BYを追記してもダメでした。

              $qry_sql .= "sc.published=1 AND sc.searchable=1 AND sc.deleted=0";


              残念ながら私では修正法が判りませんのでどなたかお願いします。
              セキュリティ問題に対応した現行バージョン1.7.1での運用が必須ですので宜しくです。
                • 33488
                • 429 Posts
                あちゃ、古いやつでしたか
                1.7.1だと同ファイルの同関数(DoSearch)の
                 $sql .= " AND ".$qry_sql;
                
                  $rs = $modx->db->query($sql);
                

                を
                 $sql .= " AND ".$qry_sql." ORDER BY id DESC";
                
                  $rs = $modx->db->query($sql);
                

                みたいな修正でどうでしょう?
                  • 33463
                  • 35 Posts
                  ZeRoさん、どもです。

                  確認しましたが該当のdoSearch関数中に

                     default:
                        $qry_sql .= ";"; // All documents


                  が有るためエラーになっちゃいます。
                  単純に消したら動作しますが$hideMenuとかいうオプションに問題出そうな気も^^;
                    • 33488
                    • 429 Posts
                    ;に気がつきませんでした
                    では、
                      switch( $hideMenu ){
                        case 0:
                          $qry_sql .= " AND sc.hidemenu=0;"; // documents visible from menu
                          break;
                    
                        case 1:
                          $qry_sql .= " AND sc.hidemenu=1;"; // documents hidden from menu
                          break;
                    
                        default:
                          $qry_sql .= ";"; // All documents
                      }
                    

                    の部分を
                      switch( $hideMenu ){
                        case 0:
                          $qry_sql .= " AND sc.hidemenu=0"; // documents visible from menu
                          break;
                    
                        case 1:
                          $qry_sql .= " AND sc.hidemenu=1"; // documents hidden from menu
                          break;
                      }
                    

                    とセミコロン取っちゃってください。
                    で、前の修正の部分を追加してください。
                      • 33463
                      • 35 Posts
                      おはようございます。

                      ZeRoさん、今度はバッチリOKでした。
                      ありがとうございます。

                      #あと一捻り考える力が足りんかったです^^;