在Magento高级搜索页面中更改属性排序

时间:2010-08-30 23:41:19

标签: php mysql magento

我在Magento的产品上有一些自定义属性,可以在Magento的搜索页面中搜索到它们;问题是字段在搜索页面上以错误的顺序列出;

例如:

Title  _____
Author _____
SKU    _____
ISBN   _____

应该是:

Author _____
Title  _____
ISBN   _____
SKU    _____

我看了一下模板文件,似乎是从它的内部排序中输出一个数组(或对象)。我想知道如何更改此顺序:)。

任何(相对直接的)想法?

3 个答案:

答案 0 :(得分:6)

如果您打开与您的模板匹配的广告代码(catalogsearch\advanced\form.phtml - > Mage_CatalogSearch_Block_Advanced_Form),您会看到它正在调用getAttributes的{​​{1}}方法正在执行:

Mage_CatalogSearch_Model_Advanced

所有这些意味着它按$attributes = Mage::getResourceModel('catalog/product_attribute_collection') ... ->setOrder('main_table.attribute_id', 'asc') ->load(); 表中的attribute_id字段排序,而不是特定的有用字段。

但是,实际查询在eav_attribute表上执行catalog_eav_attribute的连接,这意味着您可以将代码的排序部分更改为additional_table,然后更改值通过phpMyAdmin在该表中的“position”字段。

为了以面向未来的方式进行此更改,请复制->setOrder('additional_table.position', 'asc')文件并将其复制到Mage_CatalogSearch_Model_Advanced,然后再进行任何更改。

要调试SQL查询,请在app/code/local/Mage/CatalogSearch/Model中启用$_debug$_logAllQueries。不要忘记在生产中关闭它!!

希望这有帮助, JD

答案 1 :(得分:2)

在Magento 1.7x中,这可以通过管理产品属性集来完成。

转到目录 - >属性 - >管理属性集---选择属性集

从那里,您可以重新排序,添加和删除集合的属性。

答案 2 :(得分:0)

尝试在这些属性上设置位置属性?

目录 - >属性 - >管理属性 - >属性 - >前端属性 - >位置

编辑:

实际上,您可能需要将手动排序应用于搜索结果块/模板。

从这里开始了解如何做这类事情的详细信息:http://alanstorm.com/category/magento