Web design company India | Custom web development company India
open

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