From e9b12639d282c13f0e413e9a152f53586f05ba7c Mon Sep 17 00:00:00 2001 From: Fanny DECLERCK Date: Wed, 5 Jul 2017 11:51:28 +0200 Subject: [PATCH] Fix product position virtual categories --- .../community/Smile/VirtualCategories/Model/Observer.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/app/code/community/Smile/VirtualCategories/Model/Observer.php b/src/app/code/community/Smile/VirtualCategories/Model/Observer.php index 41ad571f..2d50dbe6 100644 --- a/src/app/code/community/Smile/VirtualCategories/Model/Observer.php +++ b/src/app/code/community/Smile/VirtualCategories/Model/Observer.php @@ -127,10 +127,16 @@ public function saveProductsPositions(Varien_Event_Observer $observer) $filteredPositions = array_filter($positions, 'is_numeric'); $resourceModel = Mage::getResourceModel("smile_virtualcategories/catalog_virtualCategory_product_position"); $previousProducts = $resourceModel->getProductIdsByCategory($category); + $previousPosition = $resourceModel->getByProductIds($previousProducts); + foreach ($previousPosition as $position) { + if (!isset($filteredPositions[$position["product_id"]])) { + $filteredPositions[$position["product_id"]] = $position['position']; + } + } $resourceModel->saveProductsPositions($filteredPositions, $category); - $productIdsToReindex = array_unique(array_merge($previousProducts, array_keys($filteredPositions))); + $productIdsToReindex = array_keys($filteredPositions); if (empty($productIdsToReindex)) { return $this;