Проблема зі збиранням товару - неправильні дані про ціни або відсутність товарних запасів


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()метод, моя колекція більше не містить продуктів, що не є на складі.

Чи є спосіб повернути правильні дані про ціноутворення та мати, щоб колекція містила як товар, який продається, так і немає на складі?

Відповіді:


3

addFinalPrice()також дзвінки applyProductLimitationFilters. Цей метод застосовує кілька фільтрів відповідно до того, як налаштована колекція, як фільтр магазину, який відображає лише продукти, видимі в поточному магазині.

Якщо ви хочете завантажити всі товари, видимі чи ні, як, наприклад, без фільтра цін, ви можете видалити фільтр магазину таким чином, перш ніж дзвонитиaddFinalPrice() :

$collection->setStoreId(null);

@fschmengler - дякую, це здається кращим варіантом.
BrynJ

1

Я вирішив це питання зараз, і це насправді досить просто і логічно - мені просто потрібно було перейти Configuration -> Catalog -> Inventoryі встановити "Відображення товарів на складі" наYes .

З урахуванням вищезазначеного Yesта addFinalPrice()методу, доданого до колекції, тепер я отримую всі свої продукти та правильні дані про ціни.


Це добре, якщо ви хочете демонструвати продукти, що не продаються, скрізь . Якщо це лише ця колекція, дивіться мою відповідь нижче
Фабіан Шменглер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.