Web design company India | Custom web development company India
open

Advanced Transactional Email Templates

  • Advanced Transactional Email Templates

    In this tutorial, we are going to detail of email templates in magento i.e what all features magento offers inside an email template. This tutorial is in continuation of a previous tutorial written on basics of email templates. In the previous tutorial we saw how to create a new email template for a module and sending an email. In this email we will see all the directives and variable assignment method magento offers inside an email template. Email Template Setup I will repeat the steps explained in detail in the previous tutorial, to create a new email template. First we will create our system configuration system.xml

    
    
        
            
                
                    
                        
                            
                                
                                select
                                adminhtml/system_config_source_email_template
                                3
                                1
                                1
                                1
                            
                            
                                
                                select
                                adminhtml/system_config_source_email_identity
                                4
                                1
                                1
                                1
                            
                        
                    
                
            
        
    
    
    
    This will add two dropdown in the System -> Configuration -> Customer Configuration -> Account Sharing Options. Magento Email Template DropDown config.xml Next we will create our email template file i.e test.html inside app\locale\en_US\template\email\test.html.
    
            
    
    
            
                
                    general
                    customer_account_share_custom_template
                
            
    
    
    
    PHP Code To Send Email
    public function sendTestEmail($to,$name){
            $translate = Mage::getSingleton('core/translate');
            /* @var $translate Mage_Core_Model_Translate */
            $translate->setTranslateInline(false);
     
            $storeId = Mage::app()->getStore()->getId();
     
            Mage::getModel('core/email_template')
            ->setDesignConfig(array('area' => 'frontend', 'store' => $storeId))
            ->sendTransactional(
            Mage::getStoreConfig(self::XML_PATH_TEST_EMAIL, $storeId),
            Mage::getStoreConfig(self::XML_PATH_TEST_EMAIL_IDENTITY, $storeId),
            $to,
            $name,
            array('variable1'=>'Manish','object' => $this,'html'=>'manishtest')
            );
     
            $translate->setTranslateInline(true);
        }
    
    
    Magento offers many directive to pass dynamic information to email template, so we will see each directive below. All code related to directives is written in class Mage_Core_Model_Email_Template_Filter. var Directive This is used to access variable passed. Syntax for doing this Type1
    {{var variable1}}
    
    
    This access the variable we passed in the array(‘variable1′=>’Manish’) in the sendTransactional() function. So the above code will print Manish in the email template. Type2
    {{var object.object_text}}
    
    
    what this will do is call the function getObjectText() in object ‘object’. The object has been passed in the array() as
    array('variable1'=>'Manish','object' => $this)
    
    
    So in the same class from where the sendTransactional() is called, if we create a new method called getObjectText(), the value returned by this function will be shown in the email.
    public function getObjectText(){
            return 'This is my text';
    }
    
    
    Another extension of the above which is more commonly used is, suppose we have many variables to pass to an email template e.g the $_POST variable. So to do this in the array we will pass
    array('object'=>new Varien_Object($_POST))
    
    
    and in our email template we can access this by
    {{var object.post_var1}}
    
    

  • Post Comments

    Submit Comment




    * Required Fields