Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Page 1 of 2
Как отсортировать товары по своему желанию в магазине? 
 
Mr.Devil
Jr. Member
 
Avatar
Total Posts:  15
Joined:  2009-01-29
 

Хочу задать сортировку по-умолчанию.
Ð’ частности хочу поместить товары, которые “out_of_stock” в конец списка. Ну и новинки ставить в начало. Можно ли товарам задавать кокой-то проиритет но отображение? Чем выше проиритет, тем раньше в списке показывается товар.

Подскажите как это сделать?

 
Magento Community Magento Community
Magento Community
Magento Community
 
ELSE
Member
 
Avatar
Total Posts:  47
Joined:  2008-06-12
Kiev, Ukraine
 

Вот таким образом получаем все товары из магазина с нужным порядком.

Mage::getModel('catalog/product')->getCollection()->getSelect()->order('field''direction');
 
Magento Community Magento Community
Magento Community
Magento Community
 
Mr.Devil
Jr. Member
 
Avatar
Total Posts:  15
Joined:  2009-01-29
 

Спасибо, знать бы еще в каком файле нужно исправлять )

 
Magento Community Magento Community
Magento Community
Magento Community
 
Mr.Devil
Jr. Member
 
Avatar
Total Posts:  15
Joined:  2009-01-29
 

Я честно пытался найти что и где исправить =(
Помогите разобраться…

 
Magento Community Magento Community
Magento Community
Magento Community
 
alex2b
Member
 
Total Posts:  53
Joined:  2008-12-19
 

Если быстрый хак, то в файле app\code\core\Mage\Catalog\Block\Product\List.php
$this->_productCollection = $layer->getProductCollection();

if ($sortField = $this->getSortBy()) {
$sortOrder = ‘asc’;
if (strtolower($this->getSortOrder()) == ‘desc’) {
$sortOrder = ‘desc’;
}
$this->_productCollection->addAttributeToSort($sortField, $sortOrder);
}
// сюда добавить свою сортировку
$this->_productCollection->addAttributeToSort($sortField, $sortOrder);

Как именно сортировать по наличию, сейчас некогда смотреть. Если нужно, вечером гляну

А по нормальному, надо модульчик забацать, чтобы при обновлении не сломалось

 
Magento Community Magento Community
Magento Community
Magento Community
 
Mr.Devil
Jr. Member
 
Avatar
Total Posts:  15
Joined:  2009-01-29
 

alex2b, Спасибо, быстый хак - как раз то, что нужно на первое время =)
Я в ПХП, как свинья в апельсинах, так что “модульчик” для меня несбыточная мечта )
Посмотри, пожалуйста подробнее. Поле с наличием называется “is_in_stock”. А остальне варианты сортировки не перестанут работать?

 
Magento Community Magento Community
Magento Community
Magento Community
 
alex2b
Member
 
Total Posts:  53
Joined:  2008-12-19
 

Вы 1.3 будете ставить? Там переделали все внутри, надо по-другому делать. Вообщем, написать для 1.2 или 1.3?

 
Magento Community Magento Community
Magento Community
Magento Community
 
Mr.Devil
Jr. Member
 
Avatar
Total Posts:  15
Joined:  2009-01-29
 

Теперь уже 1.3 =)
Спасибо за помощь, для быстрой связи мой номер ICQ у Вас в личке.

 
Magento Community Magento Community
Magento Community
Magento Community
 
alehano
Jr. Member
 
Total Posts:  18
Joined:  2008-10-24
 

Меня тоже этот вопрос интересует именно для 1.3
alex2b, плиз, напиши как сделать.

 
Magento Community Magento Community
Magento Community
Magento Community
 
alex2b
Member
 
Total Posts:  53
Joined:  2008-12-19
 

в файл app\code\core\Mage\Catalog\Block\Product\List.php

в функцию
protected function _getProductCollection()

после строки
$this->_productCollection = $layer->getProductCollection();

нужно добавить блок:
/*************/
$this->_productCollection->joinField(
‘inventory_in_stock’,
‘cataloginventory/stock_item’,
‘is_in_stock’,
‘product_id=entity_id’
);
$this->_productCollection->getSelect()->order(’is_in_stock desc’);
/********************/
После этого товары не в наличии будут всегда внизу списка. При этом обе группы (в наличии и нет) будут отсортированы выбранным пользователем способом.

 
Magento Community Magento Community
Magento Community
Magento Community
 
alehano
Jr. Member
 
Total Posts:  18
Joined:  2008-10-24
 

Пишет

Parse error: syntax error, unexpected ‘=’ in Z:\home\lolashop2\www\app\code\local\Mage\Catalog\Block\Product\List.php on line 93

И еще меня интересует не только вывод товаров что нет на складе внизу, но и вывод товаров по дате начиная с новых. Я так и не нашел как это сделать.

 
Magento Community Magento Community
Magento Community
Magento Community
 
alex2b
Member
 
Total Posts:  53
Joined:  2008-12-19
 

Не знаю, что-то криво скопировалось или вставилось у вас, я из работающего файла скопировал. Проверьте внимательно.
по дате добавления в 1.3 можно штатно, в редакторе атрибутов для news_date_from включить Used for sorting in product listing.

 
Magento Community Magento Community
Magento Community
Magento Community
 
alehano
Jr. Member
 
Total Posts:  18
Joined:  2008-10-24
 

Наверное я кавычки не те поставил.

Я в товарах news_date_from не указываю. Все равно сортировка будет работать?

У меня вообще странная ситуация в 1.3
Я сделал страницу с новинками. В 1.2 правильно на ней выводились только товары с указанной news_date_from
А в 1.3 вообще все выводятся в т.ч. скрытые товары в configurable products.

 
Magento Community Magento Community
Magento Community
Magento Community
 
alex2b
Member
 
Total Posts:  53
Joined:  2008-12-19
 

нет, не будет. Тогда по идентификатору можно сделать сортировку, но это уже через код.

Про новинки не подскажу, я рабочий сайт еще не переводил на 1.3

 
Magento Community Magento Community
Magento Community
Magento Community
 
alehano
Jr. Member
 
Total Posts:  18
Joined:  2008-10-24
 

Вот это и интересует - сортировка по индетефикатору. А как сделать не знаю…

 
Magento Community Magento Community
Magento Community
Magento Community
 
Mr.Devil
Jr. Member
 
Avatar
Total Posts:  15
Joined:  2009-01-29
 

alex2b, спасибо огромное! Все работает )

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top
Page 1 of 2