Получение как конечной цены, так и отсутствующих в наличии продуктов в Magento

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

В принципе, я хочу получить коллекцию продуктов следующим образом:

$products = Mage::getResourceModel('catalog/product_collection')
 ->setStoreId($storeId) // $storeId is set earlier in the code
 ->addAttributeToSelect('*')
 ->addFinalPrice()
 ->addStoreFilter()
 ->addUrlRewrite()
 ->getItems();

Если я сделаю это, то в другом месте в моем коде, где я повторяю эту коллекцию, я могу вызвать getMinimalPrice() для отдельных продуктов пакета и фактически получить цену продукта.

Однако до тех пор, пока я addFinalPrice() при извлечении коллекции, все из addFinalPrice() продуктов исключаются из коллекции. Но, если я удалю этот вызов addFinalPrice() тогда невозможно использовать getMinimalPrice() для продуктов bundle (ну, вы можете назвать все, что хотите, но вы не получите никаких данных назад.

Итак, я попал в проблемную ситуацию, как мне получить коллекцию таким образом, чтобы она извлекала все продукты, независимо от того, есть ли они на складе или нет, при этом все еще получая достаточно данных о ценах, чтобы фактически получить цену на мои продукты?

1 ответ

Я не уверен, что это решит вашу проблему, но есть функция addPriceData в модели семейства продуктов, которая помогает собирать информацию о ценах при загрузке коллекции (вместо addFinalPrice). Это может помочь получить минимальную цену, когда продукт отсутствует на складе. За конечную цену вы можете получить ее с помощью функции getFinalPrice от Mage_Catalog_Model_Product или Mage_Catalog_Model_Product_Type_Price. Вторая модель имеет много интересной функции для цен.

licensed under cc by-sa 3.0 with attribution.