We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 785
    • 2,113 Posts
    Quote from: SpaceW at Jan 10, 2011, 02:49 PM

    А возможно ли обойти как-то это?
    Есть три варианта:
    1. Не обращать внимания на ошибки (самый распространенный).
    2. Сменить хостера (самый правильный).
    3. Переписать AjaxSearch (самый геморройный).

    Проблема в том, что поиск идет на уровне SQL-запросов к базе, а если кодировка базы некорректная, запросы будут обрабатываться неверно. Теоретически может как-то и можно это побороть, но это вопрос к специалистам по MySQL.
      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
      Статьи о MODx, регулярно новые публикации
      • 9085
      • 630 Posts
      Quote from: SpaceW at Jan 10, 2011, 02:49 PM

      А возможно ли обойти как-то это? Хостер сказал, что он не может поменять character_set_database cp1251
      А можно строчку SQL-запроса из кода AS? Могу ошибаться, но регулярки - регистрозависимые, а like %searchtext% - нет. Выше в топике обсуждалось.. Если "не то" - извиняйте smiley
        Правильно заданный вопрос повышает вероятность получения нужного ответа.
        Что-то не работает? Загляните в лог ошибок!
        Есть проблема? "Локализуйте" её!
        Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx
        • 28106
        • 91 Posts
        Ну, судя по всему, за поиск отвечает ajaxSearchRequest.class.inc.php.
        При этом сам запрос формируется хитро:

        Есть функция поиска doSearch, при этом $where формируется функцией _getWhere, та, в свою очередь функцией _getFilter, а там еще и _getSubFilter.. вообщем, я пока запутался, пытаюсь сейчас выделить все-таки запрос
          ----------------------------
          in ModX we trust
          • 785
          • 2,113 Posts
          Quote from: esche at Jan 11, 2011, 06:35 AM

          Выше в топике обсуждалось..
          Помню, что обсуждалось, но найти не могу - где нужное обсуждение?

          Quote from: SpaceW at Jan 11, 2011, 12:57 PM

          вообщем, я пока запутался, пытаюсь сейчас выделить все-таки запрос
          Вроде бы надо исправлять в строке:
          $whereForm = array(’like’ => " LIKE ’%word%’", ’notlike’ => " NOT LIKE ’%word%’", ’regexp’ => " REGEXP ’[[:<:]]word[[:>:]]’");
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 9085
            • 630 Posts
             $whereForm = array('like' => " LIKE '%word%'", 'notlike' => " NOT LIKE '%word%'", 'regexp' => " REGEXP '[[:<:]]word[[:>:]]'");


            Вообще character_set_database можно установить из скрипта. Если добавить блок сразу после соединения
            (искать mysql_connect в файле manager/includes/document.parser.class.inc.php)

            mysql_query('SET character_set_database = utf8');
            mysql_query('SET NAMES utf8');


            И посмотреть, что получилось?
              Правильно заданный вопрос повышает вероятность получения нужного ответа.
              Что-то не работает? Загляните в лог ошибок!
              Есть проблема? "Локализуйте" её!
              Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx
              • 28106
              • 91 Posts
              Так, целиком значит запрос выглядит вот так вот:
              SELECT sc.id, sc.pagetitle, sc.longtitle, sc.description, sc.alias, sc.introtext, sc.template, sc.menutitle, sc.content, sc.publishedon, GROUP_CONCAT( DISTINCT CAST(ntv.id AS CHAR) SEPARATOR "," ) AS tv_id, GROUP_CONCAT( DISTINCT ntv.value SEPARATOR "," ) AS tv_value FROM `modx_site_content` sc LEFT JOIN( SELECT DISTINCT tv.id, tv.value, tv.contentid FROM `modx_site_tmplvar_contentvalues` tv ) AS ntv ON sc.id = ntv.contentid WHERE ((sc.published=1) AND (sc.searchable=1) AND (sc.deleted=0) AND (sc.privateweb=0)) GROUP BY sc.id HAVING (((sc.pagetitle LIKE ’%слово%’) OR (sc.longtitle LIKE ’%слово%’) OR (sc.description LIKE ’%слово%’) OR (sc.alias LIKE ’%слово%’) OR (sc.introtext LIKE ’%слово%’) OR (sc.menutitle LIKE ’%слово%’) OR (sc.content LIKE ’%слово%’) OR (tv_value LIKE ’%слово%’))) ORDER BY publishedon,pagetitle


              Вообще character_set_database можно установить из скрипта. Если добавить блок сразу после соединения
              (искать mysql_connect в файле manager/includes/document.parser.class.inc.php)

              Code:

              mysql_query(’SET character_set_database = utf8’);
              mysql_query(’SET NAMES utf8’);


              И посмотреть, что получилось?

              К сожалению ничего не произошло...
              вообще не понятно, почему же like, с учетом того, что в базе сравнение utf8_unicode_ci ищет по регистру, хоть character_set_database у меня и в cp1251..

              С дитто тоже были проблемы из-за � вконце строк при использовании summory, но это-то легко решалось прописывапнием в .htaccess

              PHP_VALUE mbstring.internal_encoding UTF-8
              PHP_VALUE default_charset UTF-8
              PHP_VALUE mbstring.http_output UTF-8
              PHP_VALUE mbstring.encoding_translation On
              PHP_VALUE mbstring.detect_order UTF-8
              PHP_VALUE mbstring.func_overload 7
                ----------------------------
                in ModX we trust
                • 19652
                • 29 Posts
                Здравствуйте, есть вопрос. Возможно баг, но если установить меньше 3 символов (&minChars=`2`)поиск не совершается, выдается сообщение о том, что требуется минимум 3 символа... Можно ли исправить?(Поиск без аякса).
                  • 785
                  • 2,113 Posts
                  Quote from: Miracle at Jan 18, 2011, 08:32 AM

                  Можно ли исправить?
                  В ajaxSearch.class.inc.php исправьте
                  define(’MIN_CHARS’, 3); // minimum number of characters
                    Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                    Статьи о MODx, регулярно новые публикации
                    • 19652
                    • 29 Posts
                    Спасибо) все работает)
                      • 1978
                      • 131 Posts
                      кто-нибудь знает как убрать долбанный крестик живого поиска?

                      он у меня выскакивает на странице результатов поиска, но не рядом с результатами, а в шапке сайта, где маленькая формочка

                      прибивание liveSearch не помогает

                      маленькая форма
                      [!AjaxSearch? &showResults=`0` &landingPage=`29` &tplInput=`TopSearch` &showIntro=`0` &clearDefault=`1` &ajaxSearch=`0` asId=`topsearch` &liveSearch=`0` !]


                      большая форма просто
                      [!AjaxSearch!]


                      скрин
                        Как русифировать Modx 0.9.6.1(QuickEdit, TinyMCE)
                        QuickEdit под win-1251 без mb_-функций