我在Magento v1.4.2.0中加入了一个新主题,并完成了所有必要的更改,但只遵循Magento真正的方式来覆盖Magento模块&方法
我唯一的问题是前端的自动完成建议搜索功能根本不起作用。 AJAX正在运行,因为我可以在“Firebug
”中查看呼叫(状态显示为“200 OK”),但搜索结果下拉列表未到来。
更多信息:
get
”。form.mini.phtml
”中文字字段的名称为“q
”。exception.log
和system.log
),但此处未打印任何有关自动完成搜索的内容。1
” form.mini.phtml
”页面中,同时包含所有必需的JS文件,其中没有任何错误。因此,Firebug
正在报告blank
/ NULL
AJAX响应,没有任何错误。 修改: -
我也遇到了另一个问题。假设我有4个产品,每个产品都以名称“测试”开头。另外,我们假设这4个产品的名称是“测试1 ”,“测试2 ”,“测试3 ”,“测试4 “
现在,如果我使用查询“测试”进行简单搜索,则在路由器“catalogsearch/index
”中,结果显示有4个产品可用,这是正确的。但是,如果我使用查询搜索“测试1 ”,则没有显示任何结果,这非常奇怪。
我也使用“jQuery
”,没有冲突条件。但是,还有6个“jQuery
”插件,所有插件都没有完全遵循无冲突条件。这是因为其中一些插件中的代码很大,而且我不可能改变每一个&每个“$
”签到“jQuery
”,使其不兼容冲突。任何人都可以提出这类问题吗?它是否以任何方式影响Auto Suggest Search?
答案 0 :(得分:6)
听起来服务器响应AJAX调用的方式存在问题,而不是表单或javascript的问题。我建议你需要调试几个关键领域。
理想情况下,您可以使用连接到IDE(Netbeans,Eclipse,其他)的Apache上的Xdebug进行调试。我的个人偏好/设置是Netbeans,但其他人将工作正常。如果无法使用实时调试,则可以通过代码块插入print_r / echo语句并以此方式跟踪调用。
form.mini.phtml上的javascript应该将请求发送到Mage_CatalogSearch_AjaxController
和suggestAction
。在此方法的第一个if
语句的任一侧设置断点/跟踪消息。
如果没有遇到断点/跟踪,请尝试通过将http://hostname/catalogsearch/ajax/suggest?q=query
放入浏览器地址栏来手动点击操作。
如果这不起作用,那么catalogsearch模块的配置就会出现问题,可能与<frontname><routers>
部分有关。使用Alan Storm的Configviewer或CommerceBug模块进行调试。
AjaxController
创建了Mage_CatalogSearch_Block_Autocomplete
的实例,用于执行实际查询。在$suggestData = $this->getSuggestData();
之前设置断点/跟踪以检查是否正在实例化块。
在该行之后,该块调用它自己的getSuggestData()
方法。继续跟踪代码以查看错误发生的位置。
Block调用此方法来检索与q
param匹配的值,特别是将param插入SQL查询条件的setQueryFilter()
方法。再次,通过此处追踪以找到错误。
当你在IDE中使用实时调试时,我无法强调你会发现这个(以及大多数Magento问题)会更容易。如果您需要有关此过程的提示,请阅读my answer here。
确保让Developer Mode中的服务器输出尽可能多的错误。
答案 1 :(得分:3)
如果您查看工作网站的来源(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
的元素,它的ID被传递给searchForm.initAutocomplete()
。另外,请确保您的新主题包含prototype.js
和来自js/varien/
的文件,并且没有任何其他Javascript错误。
答案 2 :(得分:3)
请检查一次,您搜索一个单词后,您知道该产品是否存在。如果无法显示,请按回车键,您将被发送到结果视图。在那次测试之后,如果您现在可以在建议搜索中找到该文章。
答案 3 :(得分:3)
我遇到了同样的问题......看起来搜索中有一个错误,或者与德国市场的某个扩展部门发生冲突....
如果您输入此内容,请检查您获得的内容:http://www.studio-ausruestung.de/catalogsearch/ajax/suggest/?q=%当然是您的网站名称。
Normaly你必须得到所有结果......