How to get detailed catalog information on Cart page in Magento?
I want to show directory rule data such as (rule name and description) on cart page.
But I am not getting any methods to do this.
I have also tried the method getAppliedRuleIds()
on the product object. But nothing happens. I think these methods are used for the shopping cart rule.
If you know any methods for directory rule. Please answer my question.
source to share
You can try the below code to get this data. I am assuming the rule id is 1 which you want to get
$rule = Mage::getModel('salesrule/rule')->load(1);
$rule->setWebsiteIds("1");
echo $rule->name;
echo $rule->description;
for directory rule try below code
$rule = Mage::getModel('catalogrule/rule')->load(1);
$rule->setWebsiteIds("1");
echo $rule->name;
echo $rule->description;
source to share
You can get applied product rules using the method below. Add this method to Application / Code / Core /Mage/CatalogRule/Model/Rule.php.
You can get the application rule ID for a product by passing in a product object.
$ruleid = Mage::getModel('catalogrule/rule')->getProductPriceRuleId(Mage::getModel('catalog/product')->load($product->getId()));
Once you get the rule, you can get the title and description using the ramming charm code.
$rule = Mage::getModel('catalogrule/rule')->load($ruleid);
$rule->setWebsiteIds("1");
echo $rule->name;
echo $rule->description;
Rule.php
public function getProductPriceRuleId(Mage_Catalog_Model_Product $product)
{
$priceRules = null;
$productId = $product->getId();
$storeId = $product->getStoreId();
$websiteId = Mage::app()->getStore($storeId)->getWebsiteId();
if ($product->hasCustomerGroupId()) {
$customerGroupId = $product->getCustomerGroupId();
} else {
$customerGroupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
}
$rulesData = $this->_getResource()->getRulesFromProduct($dateTs, $websiteId, $customerGroupId, $productId);
$dateTs = Mage::app()->getLocale()->storeTimeStamp($storeId);
$cacheKey = date('Y-m-d', $dateTs) . "|$websiteId|$customerGroupId|$productId|ruleid";
$rule_id = '';
if (!array_key_exists($cacheKey, self::$_priceRulesData)) {
$rulesData = $this->_getResource()->getRulesFromProduct($dateTs, $websiteId, $customerGroupId, $productId);
if ($rulesData) {
foreach ($rulesData as $ruleData) {
if ($product->getParentId()) {
$rule_id = $ruleData['rule_id'];
if ($ruleData['action_stop']) {
break;
}
} else {
$rule_id = $ruleData['rule_id'];
if ($ruleData['action_stop']) {
break;
}
}
}
return self::$_priceRulesData[$cacheKey] = $rule_id;
} else {
self::$_priceRulesData[$cacheKey] = null;
}
} else {
return self::$_priceRulesData[$cacheKey];
}
return null;
}
source to share