2010-08-10 2 views
1

Я разрабатываю новый магазин с помощью 1.4.1Magento переопределения порядок сортировки списка товаров по подкатегориям

Я пытаюсь сортировать продукты в списке по подкатегориям они принадлежат. В верхней части list.phtml является

$_productCollection=$this->getLoadedProductCollection(); 

Я попытался добавить сортировки фильтров в том, что путем добавления строки

$_productCollection->setOrder('category_ids', 'asc')->setOrder('name', 'asc'); 

Я также попытался addAttributeToSort вместо SetOrder. Это, похоже, не имеет никакого эффекта. Я предполагаю, что $ _productCollection не является моделью, которую я могу сортировать таким образом. Я копался, пытаясь найти правильное место, чтобы применить метод сортировки без каких-либо успехов.

Может ли кто-нибудь сказать мне подходящее место для этого?

ответ

0

$this->getLoadedProductCollection();

просто возвращает коллекцию продуктов, которые возвращаются с помощью блока из резервного конца.

если вы хотите добавить пользовательский код для сбора продукта затем отредактировать файл под иерархией папок

app/code/core/Mage/Block/catalog/product/list.php 

Вы найдете ту же имя функция т.е. getLoadedProductCollection() отслеживать его работу и, наконец, вы найдете решение ,

0

Адрес: getLoadedProductCollection От кого? Это безопасная ставка (по имени коллекции), что коллекция была загружена (например, SQL уже выполнена) к моменту возврата коллекции. Это означает, что ваша возможность для ограничения/сортировки закончилась.

Возможно, другая версия этого метода еще не была загружена. Используйте это, если это возможно.

Спасибо, Джо

+0

Должен ли быть способ сортировки коллекции после выполнения SQL? Я думаю, что если бы я использовал что-то другое, кроме getLoadedProductCollection, то мне пришлось бы переписать способ работы с продуктом. – dardub

+0

Концепция сортировки после того, как коллекция уже загружена, является проблематичной. Подумайте об установке с продуктами 5k. Коллекция первых 30 продуктов имеет AA через AK. Если вы отсортируете их в обратном порядке, то, что большинство людей думает мысленно, получает ZZ-ZA, но вы действительно получите AK к AA. Если вы хотите отсортировать вручную, скопируйте их в массив и используйте ksort. –

0

Вы правы Иосиф, SQL находятся в /app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php, поиск по «публичной функции addAttributeToSort "

Но код для этого не доступен.

Только не забудьте сохранить новый Collection.php на пути/app/code/local/Mage/Catalog/Model/Resource/Eav/Mysql4/Product, чтобы избежать проблем с обновлениями.

Если вы понимаете код, отправьте сообщение.

Я пытаюсь отсюда.

Смежные вопросы