2010-08-30 48 views
3

我在我的Magento产品上有几个自定义属性,它们可以在Magento的搜索页面中搜索;问题是这些字段在搜索页面上以错误的顺序列出;更改Magento高级搜索页面中的属性排序

例如:

 
Title _____ 
Author _____ 
SKU _____ 
ISBN _____ 

应该是:

 
Author _____ 
Title _____ 
ISBN _____ 
SKU _____ 

我已经采取了看一看模板文件,它似乎是输出数组(或对象)从它的内部排序。我想知道如何改变这个顺序:)。

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

回答

6

如果您打开您的模板匹配的块(catalogsearch\advanced\form.phtml - >Mage_CatalogSearch_Block_Advanced_Form),你会看到,它调用的Mage_CatalogSearch_Model_AdvancedgetAttributes方法,又执行:

$attributes = Mage::getResourceModel('catalog/product_attribute_collection') 
      ... 
      ->setOrder('main_table.attribute_id', 'asc') 
      ->load(); 

所有这一切意味着它是由attribute_id字段排序在eav_attribute表,而不是一个特定的有效场。

然而,实际的查询执行对catalog_eav_attribute表作为additional_table这意味着你可能会改变代码的排序部是->setOrder('additional_table.position', 'asc'),然后经由phpMyAdmin的改变在该表中的“位置”字段的值的联接。

为了进行这种以面向未来的方式进行更改,请在进行任何更改之前,将Mage_CatalogSearch_Model_Advanced文件的副本复制到app/code/local/Mage/CatalogSearch/Model

要调试SQL查询,请在lib/varien/Db/Adapter/Pdo/Mysql.php中启用$_debug$_logAllQueries。不要忘记在制作中关掉它!

希望这有助于 JD

+0

@Jonanthan:我讨厌这样的事情要做。但是magneto在这些事情上并不那么聪明。总之你节省了我的时间。谢谢 – Gowri 2011-11-18 07:39:23

0

试图设置这些属性的位置属性?

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

编辑:

事实上,它看起来像您可能需要人工分拣应用到搜索结果块/模板。

开始这里就怎么做那种事的细节:http://alanstorm.com/category/magento

+1

来自magento IRC:属性在分层导航区块中的位置指的是何时属性是下拉,选择或价格的位置实际上是在is_anchor导航或类似的东西。所以,如果该属性只是一个文本输入,那么该位置将被禁用。 – 2010-08-31 00:00:33

2

在Magento的1.7倍这可以通过产品属性设置的管理来实现。

进入目录 - >属性 - >管理属性设置---选择你的属性设置

从那里,你可以重新排列,一组添加和删除属性。

+0

在1.9倍它改变产品页面属性的顺序而不是高级搜索 – turson 2016-09-22 11:17:00