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.

+3


source to share


2 answers


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;

      

0


source


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;
}

      

0


source







All Articles