如果您打开您的模板匹配的块(catalogsearch\advanced\form.phtml
- >Mage_CatalogSearch_Block_Advanced_Form
),你会看到,它调用的Mage_CatalogSearch_Model_Advanced
的getAttributes
方法,又执行:
$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
@Jonanthan:我讨厌这样的事情要做。但是magneto在这些事情上并不那么聪明。总之你节省了我的时间。谢谢 – Gowri 2011-11-18 07:39:23