Проблема со сбором товара - неверные данные о ценах или отсутствие товаров на складе

9

Я получаю коллекцию товаров на основе текущей категории. Мне нужно, чтобы эта коллекция содержала как входящие, так и отсутствующие товары, а также данные о ценах для правильного отображения.

Мой магазин сконфигурирован для хранения цен на товары с учетом налогов и для показа цен как включающих, так и эксклюзивных на витрине магазина.

Код для получения коллекции выглядит следующим образом:

$category = Mage::registry('current_category'); 
$_productCollection = Mage::getModel('catalog/product')->getCollection()
                ->addCategoryFilter($category)
                ->addAttributeToSelect(['sku', 'name', 'price'])
                ->addAttributeToFilter('status', 1)
                ->addAttributeToSort('jump_number', Varien_Data_Collection::SORT_ORDER_ASC); 

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

После некоторых исследований я обнаружил, что добавление addFinalPrice()метода в мою коллекцию дает мне ожидаемую цену - правильную эксклюзивную и правильную инклюзивную цену.

Однако, если я включу этот addFinalPrice()метод, моя коллекция больше не будет содержать товаров на складе.

Есть ли способ вернуть правильные данные о ценах и иметь в коллекции как товарную, так и нет в наличии продукцию?

BrynJ
источник

Ответы:

3

addFinalPrice()также звонки applyProductLimitationFilters. Этот метод применяет несколько фильтров в зависимости от того, как настроена коллекция, например, фильтр магазина, который показывает только те товары, которые видны в текущем магазине.

Если вы хотите , чтобы загрузить все продукты, видимые или нет, как и без ценового фильтра, вы можете удалить фильтр магазина , как это, перед тем вызовом addFinalPrice():

$collection->setStoreId(null);
Фабиан Шменглер
источник
@fschmengler - спасибо, кажется, это лучший вариант.
BrynJ
1

Я решил эту проблему сейчас, и она на самом деле довольно проста и логична - мне просто нужно было перейти Configuration -> Catalog -> Inventoryи установить «Показать на складе» Yes.

С указанным выше значением Yesи addFinalPrice()добавленным в коллекцию методом я теперь получаю все свои продукты и правильные данные о ценах.

BrynJ
источник
Это хорошо, если вы хотите показывать на складе продукты везде . Если это только для этой коллекции, см. Мой ответ ниже
Фабиан Шменглер