Magento 1.9 – How to Change Theme Programmatically for Specific Controller

controllersdynamicmagento-1.9theme

How to change theme programatically for specific controller ?

I have to change theme for a particular controller.

Best Answer

If you want to set specific theme for all action of controller you can add in controller

protected function _construct(){
   parent::_construct();
   Mage::getDesign()->setArea('frontend') //Area (frontend|adminhtml)
    ->setPackageName('packagename') //Name of Package
    ->setTheme('default');// Name of theme
}

If you want to set for specific action then add below code at startup of action

 Mage::getDesign()->setArea('frontend') //Area (frontend|adminhtml)
        ->setPackageName('packagename') //Name of Package
        ->setTheme('default');// Name of theme

Check following example:

public function loginAction()
{
   if ($this->_getSession()->isLoggedIn()) {
        $this->_redirect('*/*/');
        return;
    }

   Mage::getDesign()->setArea('frontend') //Area (frontend|adminhtml)
    ->setPackageName('packagename') //Name of Package
    ->setTheme('default');// Name of theme

   $this->getResponse()->setHeader('Login-Required', 'true');
    $this->loadLayout();
    $this->_initLayoutMessages('customer/session');
    $this->_initLayoutMessages('catalog/session');
    $this->renderLayout();
}
Related Topic