Настройка сортировки по умолчанию при выборе определенного варианта покупок в многоуровневой навигации

По умолчанию сортировка установлена ​​по имени, а при выборе определенных категорий обычно по цене. Однако я не уверен, как назначить настройку сортировки по умолчанию при совершении покупок с помощью параметра, отличного от категории. У меня есть атрибут в моей многоуровневой навигации под названием "Размер", и когда он используется в качестве фильтра, я бы хотел отсортировать по цене.

Я предполагаю, что вопрос заключается в том, существует ли способ сделать это в XML - во-первых, как вызвать правильную область действия для параметра покупки, отличного от категории, и во-вторых, как изменить параметр сортировки. Я предполагаю, что через XML это невозможно, и мне придется углубляться, но любой совет приветствуется!

2 ответа

Я думаю, что вам придется переопределить файл ядра, чтобы выполнить то, что вы хотите (не изменяйте файл ядра - переопределите класс, скопировав его в локальный пул кода или переписав класс). По умолчанию это порядок сортировки, установленный на панели администратора. Чтобы изменить это, вам придется изменить эту логику.

Я начал с поиска в классе Mage_Catalog_Block_Layer_Category. Это ссылка на класс Mage_Catalog_Model_Layer_Filter_Category. Этот класс обрабатывает получение категорий для многоуровневой навигации.

Я думаю, вам нужно посмотреть на функцию _getItemsData(). Я думаю, что вы либо захотите изменить логику для категорий $, чтобы установить желаемый порядок (возможно, это более предпочтительный вариант), либо вы сможете выполнить некоторую пользовательскую сортировку элементов, помещаемых в массив $data.,

Перейдите в app\code\core\Mage\Catalog\Model\Resource\Eav\Mysql4\Product и откройте файл collection.php и найдите функцию с именем addAttributeToSort(), эта функция отвечает за сортировку атрибута, здесь вы можете поместить ваша логика для сортировки и переопределения вашего файла после тестирования

Другие вопросы по тегам