Question

How to display special price products in Sale category by default

Not like selecting products while creating categories or selecting category while adding products.

Was it helpful?

Solution

We can do this using event > observer. Using catalog_product_prepare_save event of admin we can able to do this possible.

           <adminhtml>
             <events>
                <catalog_product_prepare_save>
                    <observers>
                        <Modulename>
                            <type>model</type>
                            <class>Modulename/observer</class>
                            <method>onProductPrepareSave</method> 
                        </Modulename>
                    </observers>
                </catalog_product_prepare_save>
           </events>    
        </adminhtml>

Use below function in your module observer

class MyCompany_Modulename_Model_Adminhtml_Observer
{
  /**
    * Assign category 'sale' when product having sale price
    * 
    * @param Varien_Event_Observer $observer
    */
    public function onProductPrepareSave(Varien_Event_Observer $observer)
    {
        $product = $observer->getEvent()->getProduct();     
        $request = $observer->getEvent()->getRequest();     
        $postData = $request->getPost();        
        $categoryIds = array();
        $categoryIds = $product->getCategoryIds();
        if(isset($postData['product']['special_price'])) {
            if(!in_array('ID of Sale Cat',$categoryIds)) {
                $saleCatId = array('ID of Sale Cat');
                $updateCatIds = array_merge($categoryIds,$saleCatId);
                $product->setCategoryIds($updateCatIds);
            }
        }

    }
}

Replace 'Modulename' with your module. Change 'ID of Sale Cat' with your 'Sale' category id.

I hope above code will help you.

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top