2015-01-13 2 views
0

У меня был странный запрос от клиента.Товары для заказа Magento по SKU и слова в названии продукта

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

Так было бы: 1. Продукт 1 2. Продукт 2 3. Продукт 3 то остальная часть заказанных товаров по SKU.

Я знаю, что нижеприведенный код закажет продукцию по sku, но я не знаю, как изменить его, чтобы достичь того, чего я хочу.

трех продуктов будет выбран, упоминая слово в продукции имя например «White» в King Size Bed White

$this->_productCollection = Mage::getModel('catalog/product')->getCollection() 
    ->addAttributeToSelect('sku') 
    ->setOrder('sku', 'asc')->load(); 

Может кто-нибудь дать мне некоторую помощь, пожалуйста? Спасибо

ответ

1

Я видел такое поведение раньше. Обычно это делается по-другому, загружая коллекцию бестселлеров или других закрепленных продуктов, которые они пытаются увеличить, а затем обычную коллекцию продуктов для разбивки на страницы. Эта функциональность коллекций будет инкапсулирована в блоки, чтобы сделать ее более приятной на интерфейсе. Будет ли это более подходящим для вас?

/** 
* Get Best Sellers 
*/ 
/** @var Mage_Catalog_Model_Resource_Product_Collection $bestSellersCollection */ 
$bestSellersCollection = Mage::getModel('catalog/product')->getCollection(); 
$bestSellersCollection 
    ->addFieldToFilter('name', array('like' => '%white%')) 
    ->setPageSize(3) 
    ->setOrder('name', Varien_Data_Collection::SORT_ORDER_ASC); 

$bestSellerIds = array(); 
foreach ($bestSellersCollection as $bestSeller) { 
    $bestSellerIds[] = $bestSeller->getId(); 
} 

/** 
* Get Products excluding the best sellers. 
*/ 
/** @var Mage_Catalog_Model_Resource_Product_Collection $productCollection */ 
$productCollection = Mage::getModel('catalog/product')->getCollection(); 
$productCollection->addFieldToFilter('entity_id', array('nin' => $bestSellerIds)) 
    ->setOrder('sku', Varien_Data_Collection::SORT_ORDER_ASC); 

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

Magento: how to merge two product collections into one?

Magento - Collection Filter by Array Keep Order