- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Magento 2 Custom Variables in Email Template
I have a custom shipping module and I am trying to execute some information in an email template based on the shipping method chosen. I have tried things like:
{{if order.getShippingDescription() == 'Shipping Method - Shipping Title'}} <p>{{trans "Works!"}}</p> {{/if}}
How can I target the shipping method and show information based on that method in the email template?
Or, how can I do something like this:
Thanks, Stan
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Magento 2 Custom Variables in Email Template
UPDATE:
I have tried creating a plugin in Vendor/Module/Plugin/Order/Email/Container/EmailCode.php:
class EmailCode { public function beforeSetTemplateVars(\Magento\Sales\Model\Order\Email\Container\Template $subject, array $vars) { /** @var Order $order */ $order = $vars['order']; $method = $order->getShippingMethod(); $vars['shipping_code'] = $method === 'freedelivery_freedelivery'; return [$vars]; } }
and I added in etc/frontend di.xml:
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Sales\Model\Order\Email\Container\Template"> <plugin name="email.shipping.code" type="Vendor\Module\Plugin\Order\Email\Container\Template\EmailCode" sortOrder="100"/> </type> </config>
and then this in my email template:
{{if shipping_code}} <p>{{trans "Email Code Works"}}</p> {{/if}}
And it didn't work. Any help is appreciated!
Here it is on Magento StackExchange:
Thanks!
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Magento 2 Custom Variables in Email Template
You can do this withoud making changes in files. Magento has created tempate varibales for the transactional email templates. you can find all variables form the https://gist.github.com/tiagones/e2f3f822515e2fe0d23d
order.getShippingDescription() is not woring in you case. you can try other valid template vars.
{{var order.getShippingMethod(1).getMethod()}}
{{var order.getShippingCarrier().getConfigData('title')}}
Find helpful? Consider Giving Kudos to this post.
Problem solved? Click Accept as Solution!
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Magento 2 Custom Variables in Email Template
Hi,
@Kapil_Thakur I am not sure if that will do what I need. If a certain shipping method is used I need to show some information.
Anyhow, I did it by adding an Observer. If anyone wants the code the solution is in the Stack Exchange link in my original post.
Thanks!