Если вы откроете блок, соответствующий вашему шаблону (catalogsearch\advanced\form.phtml
-> Mage_CatalogSearch_Block_Advanced_Form
), вы увидите, что он вызывает getAttributes
метод 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
, что означает, что вы можете изменить часть сортировки кода на ->setOrder('additional_table.position', 'asc')
, а затем изменить значения поля "position" в эта таблица через phpMyAdmin.
Чтобы сделать это изменение в будущем, возьмите копию файла Mage_CatalogSearch_Model_Advanced
и скопируйте его в app/code/local/Mage/CatalogSearch/Model
, прежде чем вносить какие-либо изменения.
Чтобы отладить SQL-запрос, включите $_debug
и $_logAllQueries
в lib/varien/Db/Adapter/Pdo/Mysql.php
. Не забудьте выключить это в производстве !!
Надеюсь, это поможет,
JD