Ответ 1
Я не тестировал это, но считаю, что что-то вроде этого должно работать:
->addAttributeToFilter( 'sku', array( 'in' => array( 'my-sku1', 'my-sku2', 'my-sku3' ) ) )
Я знаю, что можно фильтровать коллекцию одним SKU, как показано ниже:
$_testproductCollection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('SKU', array('like'=>array('my-sku')));
$_testproductCollection->load();
Но есть ли способ добавить список SKU, например, следующий (который не работает):
->addAttributeToFilter('SKU', array('like'=>array('my-sku1, my-sku2, my-sku3')))
Я не тестировал это, но считаю, что что-то вроде этого должно работать:
->addAttributeToFilter( 'sku', array( 'in' => array( 'my-sku1', 'my-sku2', 'my-sku3' ) ) )
Для будущих авантюристов.
$productSkuString = 'PROD001, PROD002, PROD003';
$productIds = explode(', ', $productSkuString);
$products = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('*') // <- careful with this
->addAttributeToFilter(
'sku', array('in' => $productIds)
)
->load();
// usage
foreach($products as $prod) {
echo $prod->getName();
}
Протестировано в версиях 1.7.0.2 и 1.8.1.0.
Вам нужно разделить 'addAttributeToFilter' или разделить второй параметр в этой функции Пример:
$collection->addAttributeToFilter(
array(
array('attribute'=>'sku','like'=>"%$sku%"),
array('attribute'=>'sku','like'=>"%$sku%")
));