Magento - автозаполнение Предложить поиск не работает - PullRequest
7 голосов
/ 19 февраля 2011

Я включил новую тему в Magento v1.4.2.0 и выполнил все необходимые изменения, но только следуя истинному способу Magento переопределить модули и методы Magento.

Моя единственная проблема заключается в том, что функция автоматического поиска подсказок во внешнем интерфейсе вообще не работает. AJAX работает, так как я могу просматривать вызовы в «Firebug» (состояние отображается как «200 OK»), но раскрывающийся список результатов поиска не появляется.

Дополнительная информация:

  • Проверен метод формы и задано значение "get".
  • Имя текстового поля в «form.mini.phtml» - «q».
  • Проверены оба файла журнала (exception.log & system.log), но здесь ничего не напечатано относительно автоматического завершения поиска.
  • Проверены параметры минимальной длины запроса (из « Система> Конфигурация> Каталог> Поиск по каталогу> Минимальная длина запроса »), и для нее установлено значение «1».
  • Включите весь HTML-код на странице "form.mini.phtml" как можно точнее, а также включите все необходимые файлы JS без каких-либо ошибок в них. В результате Firebug сообщает об ответах blank / NULL AJAX без каких-либо ошибок.

Edit: -
Я также получаю еще одну проблему. Скажем, у меня есть 4 продукта, каждый из которых начинается с названия « Test ». Также предположим, что названия этих 4 продуктов следующие: « Test 1 », « Test 2 », « Test 3 », « Test 4 ».
Теперь, если я выполняю простой поиск с запросом " Test " в маршрутизаторе "catalogsearch/index", то результат показывает, что доступно 4 продукта, и это правильно. Но если я выполняю поиск с запросом « Test 1 », то результаты не отображаются, что очень странно.

Также я использую "jQuery", без условий конфликта. Однако есть также 6 плагинов "jQuery", каждый из которых не полностью соответствует условию отсутствия конфликта. Это потому, что код в некоторых из этих плагинов огромен, и я не могу изменить каждый знак "$" на "jQuery", что делает его несовместимым с конфликтами. Кто-нибудь может предложить для такого рода проблемы тоже? И влияет ли это каким-либо образом на автоматический поиск предложений?

Ответы [ 4 ]

7 голосов
/ 22 февраля 2011

Звучит так, как будто есть проблема с тем, как сервер отвечает на вызовы AJAX, а не с формой или javascript.Я хотел бы предложить вам отладить пару ключевых областей.

В идеале вы должны отладить это с помощью Xdebug на вашем Apache, подключенном к вашей IDE (Netbeans, Eclipse, другие).Мои личные предпочтения / настройки - Netbeans, но другие будут работать нормально.Если вы не можете использовать оперативную отладку, вы можете вставить операторы print_r / echo через блоки кода и таким образом отследить вызов.

  1. Mage_CatalogSearch_AjaxController

Javascript на form.mini.phtml должен отправлять запрос в Mage_CatalogSearch_AjaxController и suggestAction.Установите точки останова / сообщения трассировки по обе стороны от первого оператора if в этом методе.

Если точка останова / трассировка не была достигнута, попробуйте вручную нажать на действие, поместив http://hostname/catalogsearch/ajax/suggest?q=query в адресную строку браузера.

Если это не сработает, значит, что-то не работаетКонфигурация модуля catalogsearch, вероятно, связана с разделом <frontname><routers>.Используйте Alan Storm Configviewer или модули CommerceBug для отладки этого.

Mage_CatalogSearch_Block_Autocomplete

AjaxController создает экземпляр Mage_CatalogSearch_Block_Autocomplete, который выполняет фактический запрос.Установите точку останова / трассировку непосредственно перед $suggestData = $this->getSuggestData();, чтобы проверить, что экземпляр Блока создается

После этой строки блок вызывает собственный метод getSuggestData().Продолжайте прослеживать код, чтобы увидеть, где происходит ошибка.

Mage_CatalogSearch_Model_Query :: getSuggestCollection ()

Блок вызывает этот метод для получения значений, соответствующих параметру q, в частности, метода setQueryFilter(), который вставляет параметр в запрос SQLкритерии.Снова проследите здесь, чтобы найти ошибку.

Я не могу особо подчеркнуть, насколько легче вы найдете это (и большинство проблем с Magento), когда вы используете живую отладку в вашей IDE.Прочитайте мой ответ здесь , если вам нужны советы по этому процессу.

Убедитесь, что у вас есть сервер в Режим разработчика , чтобы вывести как можно больше ошибок.

3 голосов
/ 05 февраля 2012

У меня та же проблема ... похоже, что ошибка в поиске или конфликт с каким-либо расширением, например, на немецком рынке ...

Проверьте, что вы получите, если введете это: http://www.studio -ausruestung.de / catalogsearch / ajax / предложить /? Q =% с вашим именем, конечно.

Обычно вы должны получить все результаты ...

3 голосов
/ 29 июня 2011

Пожалуйста, проверьте один раз, что вы ищете слово, вы знаете, что продукт существует.Если это не может быть показано тогда, нажмите ввод, и вы будете отправлены на просмотр результатов.После этого теста, если вы можете найти статью сейчас в предлагаемом поиске.

3 голосов
/ 19 февраля 2011

Если вы просматриваете источник работающего сайта (view-source: http://demo.magentocommerce.com/), вы должны найти форму поиска, которая выглядит следующим образом:

<div class="form-search">
    <label for="search">Search:</label>
    <input id="search" type="text" name="q" value="" class="input-text" />
    <button type="submit" title="Search" class="button"><span><span>Search</span></span></button>
    <div id="search_autocomplete" class="search-autocomplete"></div>
    <script type="text/javascript">
    //<![CDATA[
        var searchForm = new Varien.searchForm('search_mini_form', 'search', 'Search entire store here...');
        searchForm.initAutocomplete('http://demo.magentocommerce.com/catalogsearch/ajax/suggest/', 'search_autocomplete');
    //]]>
    </script>
</div>

Важной частью кажется элемент под названием search_autocomplete и его идентификатор передается searchForm.initAutocomplete(). Также убедитесь, что ваша новая тема содержит prototype.js и файлы из js/varien/ и не имеет других ошибок Javascript.

...