In Magento 2, if you are adding a functionality in which you want to get product’s collection or product ids which satisfies the catalog rules, then you can use the gives code:
public function getCatalogPriceRuleProductIds() { $storeManager = \Magento\Framework\App\ObjectManager::getInstance()->create( '\Magento\Store\Model\StoreManagerInterface' ); $catalogRule = \Magento\Framework\App\ObjectManager::getInstance()->create( '\Magento\CatalogRule\Model\RuleFactory' ); $websiteId = $storeManager->getStore()->getWebsiteId();//current Website Id $resultProductIds = []; $catalogRuleCollection = $catalogRule->create()->getCollection(); $catalogRuleCollection->addIsActiveFilter(1);//filter for active rules only foreach ($catalogRuleCollection as $catalogRule) { $productIdsAccToRule = $catalogRule->getMatchingProductIds(); foreach ($productIdsAccToRule as $productId => $ruleProductArray) { if (!empty($ruleProductArray[$websiteId])) { $resultProductIds[$productId] = $catalogRule->getName();//name of rule } } } return $resultProductIds; }
Here,
$storeManager, is an object of StoreManagerInterface.
$catalogRule, is an object of CatalogRule collection.
getMatchingProductIds(), it return the all product ids which are used in conditions according to websites, and assign 1 for the product ids which satisfies the condition.
$resultProductIds, returns an array in which product ids are as keys and catalog rule’s name is an value.
I hope this blog will help you with Product collection which satisfies Catalog Rule in Magento 2. You may also check our wide range of best Magento 2 Extensions.
Please reach out to our team via a support ticket if you have any queries.
Try this and if you have any queries then just comment below 🙂
Be the first to comment.