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

#php #magento

#php #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() , его невозможно будет использовать getMinimalPrice() в продуктах пакета (ну, вы можете называть это как угодно, но вы не получите никаких данных обратно.

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

Ответ №1:

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

Комментарии:

1. К сожалению getFinalPrice , дает мне 0 в качестве цены на продукты bundle, и буквально все addFinalPrice , что делает, это call addPriceData .