对象已移动

可在此处找到该文档 Apply an email template transformation from a module – New Self New Life
New Self New Life
No Result
View All Result
  • Home
  • Entertainment
  • Celebrity
  • Cinema
  • Music
  • Digital Lifestyle
  • Social Media
  • Softwares
  • Devices
  • Home
  • Entertainment
  • Celebrity
  • Cinema
  • Music
  • Digital Lifestyle
  • Social Media
  • Softwares
  • Devices
New Self New Life
No Result
View All Result
Home Softwares

Apply an email template transformation from a module

by admin
3 years ago
in Softwares
Apply an email template transformation from a module
Share on FacebookShare on Twitter


On this weblog, we’ll discover ways to apply the transformation in Prestashop trendy e-mail templates from a module.

The Prestashop has an TransformationInterface interface to change your template’s design simply. Listed below are the interface particulars:

<?php
namespace PrestaShopPrestaShopCoreMailTemplateTransformation;

interface TransformationInterface
{
    /**
     * @param string $templateContent
     * @param array $templateVariables
     *
     * @return string
     */
    public operate apply($templateContent, array $templateVariables);

    /**
     * Returns the kind of templates both html or textual content
     *
     * @return string
     */
    public operate getType();

    /**
     * @param LanguageInterface $language
     *
     * @return object
     */
    public operate setLanguage(LanguageInterface $language);
}

Go to the GitHub hyperlink https://github.com/PrestaShop/PrestaShop/blob/8.0.0/src/Core/MailTemplate/Transformation/TransformationInterface.php to get extra details about this interface.

The apply methodology receives the rendered structure as a string to carry out alternative and DOM manipulation.

In the event you don’t wish to modify it merely return the string with none adjustments. The getType methodology is used to filter transformations and the setLanguage methodology will can help you know concerning the language utilized in e-mail era to establish localized content material.

Looking for an skilled
Prestashop Firm ?
Learn Extra


Within the following instance, we’re utilizing a contemporary customized structure. If you wish to create a brand new structure then observe our different weblog.

{# modules/demoemail/mails/structure/customizable_modern_layout.html.twig #}
{% extends '@MailThemes/trendy/elements/structure.html.twig' %}

{% block content material %}
  <desk width="100%">
    <tr>
      <td align="middle" class="titleblock">
        <font dimension="2" face="{{ languageDefaultFont }}Open-sans, sans-serif" coloration="#555454">
          <span class="title">{{ 'That is an instance mail template from my module for contemporary theme'|trans({}, 'EmailsBody', locale)|uncooked }}</span>
        </font>
      </td>
    </tr>
    <tr>
      <td align="middle" class="titleblock">
        <font dimension="2" face="{{ languageDefaultFont }}Open-sans, sans-serif" coloration="#555454">
          <span class="customTitle">{{ exampleMsg }}</span>
        </font>
      </td>
    </tr>
    <tr>
      <td class="space_footer">&nbsp;</td>
    </tr>
  </desk>
{% endblock %}
Within the above code the <<robust><em>span class="customTitle"></em></robust> that comprises the message, we'll use this as a CSS selector to use our transformation.

Within the under code, we’ll create a category ExampleMsgColorTransformation that may prolong AbstractTransformation summary class. The AbstractTransformation class implements the TransformationInterface. The target of this class is to vary the colour of all of the <span> tags with the customTitle class.

<?php
namespace PrestaShopModuleDemoemailMailTemplateTransformation;

use PrestaShopPrestaShopCoreExceptionInvalidArgumentException;
use PrestaShopPrestaShopCoreMailTemplateMailTemplateInterface;
use PrestaShopPrestaShopCoreMailTemplateTransformationAbstractTransformation;
use SymfonyComponentDomCrawlerCrawler;
use DOMElement;

/**
 * Class ExampleMsgColorTransformation provides the customized coloration to all spans
 * with class subtitle.
 */
class ExampleMsgColorTransformation extends AbstractTransformation
{
    /** @var string */
    personal $customColor;

    /**
     * @param string $customColor
     * @throws InvalidArgumentException
     */
    public operate __construct($customColor)
    {
        mum or dad::__construct(MailTemplateInterface::HTML_TYPE);
        $this->customColor = $customColor;
    }

    /**
     * @inheritDoc
     */
    public operate apply($templateContent, array $templateVariables)
    {
        $crawler = new Crawler($templateContent);
        $customSpans = $crawler->filter('span[class="subtitle"]');
        /** @var DOMElement $customSpan */
        foreach ($customSpans as $customSpan) {
            $customSpan->setAttribute('model', sprintf('coloration: %s;', $this->customColor));
        }

        return $crawler->html();
    }
}

Now add your transformation for this structure, you could use the actionGetMailLayoutTransformations hook to render this from the module.

<?php
use PrestaShopPrestaShopCoreMailTemplateMailTemplateInterface;
use PrestaShopPrestaShopCoreMailTemplateMailTemplateRendererInterface;
use PrestaShopPrestaShopCoreMailTemplateLayoutLayoutInterface;
use PrestaShopPrestaShopCoreMailTemplateTransformationTransformationCollectionInterface;
use PrestaShopModuleDemoemailMailTemplateTransformationExampleMsgColorTransformation;

class Demoemail extends Module 
{
   public operate set up() 
   {
        return mum or dad::set up()
            && $this->registerHook(MailTemplateRendererInterface::GET_MAIL_LAYOUT_TRANSFORMATIONS)
        ;
    }
    
    public operate uninstall() 
    {
        return mum or dad::uninstall()
            && $this->unregisterHook(MailTemplateRendererInterface::GET_MAIL_LAYOUT_TRANSFORMATIONS)
        ;        
    }
    
    public operate allow() 
    {
        return mum or dad::allow()
            && $this->registerHook(MailTemplateRendererInterface::GET_MAIL_LAYOUT_TRANSFORMATIONS)
        ;
    }
    
    public operate disable() 
    {
        return mum or dad::disable()
            && $this->unregisterHook(MailTemplateRendererInterface::GET_MAIL_LAYOUT_TRANSFORMATIONS)
        ;        
    }
    
    /**
     * @param array $hookParams
     */
    public operate hookActionGetMailLayoutTransformations(array $hookParams)
    {
        if (!isset($hookParams['templateType']) ||
            MailTemplateInterface::HTML_TYPE !== $hookParams['templateType'] ||
            !isset($hookParams['mailLayout']) ||
            !isset($hookParams['layoutTransformations'])) {
            return;
        }

        /** @var LayoutInterface $mailLayout */
        $mailLayout = $hookParams['mailLayout'];
        if ($mailLayout->getModuleName() != $this->identify) {
            return;
        }

        /** @var TransformationCollectionInterface $transformations */
        $transformations = $hookParams['layoutTransformations'];
        $transformations->add(new ExampleMsgColorTransformation('#FF0000'));
    }
}
email_template

Now go to the “Design > E mail Theme” web page and preview your structure you will notice that your message has now modified its coloration.

email_template_1

That’s all about this weblog.

If any subject or doubt please be at liberty to say it within the remark part.

I’d be completely satisfied to assist.

Additionally, you possibly can discover our PrestaShop Improvement Companies & a wide range of high quality PrestaShop Modules.

For any doubt contact us at [email protected]

author-thumb

Amit Kumar Tiwari
3 Badges

10 December 2022



Source link

Tags: ApplyEmailModuletemplateTransformation
Previous Post

Uber files lawsuit to block NYC driver pay increase

Next Post

The Doom That Came to Gotham Movie

Related Posts

Magento 2 SEO for ChatGPT : The AI Ranking Guide
Softwares

Magento 2 SEO for ChatGPT : The AI Ranking Guide

by admin
September 25, 2025
Microsoft fixes Windows automatic apps rearrangement issue
Softwares

Microsoft offers no-cost Windows 10 lifeline

by admin
September 26, 2025
Syncfusion restructures Essential Studio into multiple different suites to provide greater flexibility for developers
Softwares

Syncfusion restructures Essential Studio into multiple different suites to provide greater flexibility for developers

by admin
September 23, 2025
XZ attack reveals unlearned open-source security lessons
Softwares

XZ attack reveals unlearned open-source security lessons

by admin
September 22, 2025
Fixes, Polish, and security updates – Vivaldi Browser snapshot 3813.3
Softwares

Fixes, Polish, and security updates – Vivaldi Browser snapshot 3813.3

by admin
September 19, 2025
Next Post
The Doom That Came to Gotham Movie

The Doom That Came to Gotham Movie

Glee ‘s Kevin McHale Speaks Out Against The Price of Glee Docuseries

Glee 's Kevin McHale Speaks Out Against The Price of Glee Docuseries

  • Trending
  • Comments
  • Latest
I Only Have More Questions After Another Bizarre Outing With The Harrigans

I Only Have More Questions After Another Bizarre Outing With The Harrigans

April 20, 2025
Amazon Forgot to Take the 2024 MacBook Air Off Sale After Their Big Spring Event

Amazon Forgot to Take the 2024 MacBook Air Off Sale After Their Big Spring Event

April 4, 2025
Google’s AI Ambitions An ‘Existential Crisis’ For News Online

Google’s AI Ambitions An ‘Existential Crisis’ For News Online

September 6, 2025
Ecca Vandal’s “CRUISING TO SELF SOOTHE” video is an ode to skate culture

Ecca Vandal’s “CRUISING TO SELF SOOTHE” video is an ode to skate culture

March 10, 2025
Easy Blueberry Scones (With Frozen Blueberries)

Easy Blueberry Scones (With Frozen Blueberries)

April 10, 2025
A Global Recognition of Indi

A Global Recognition of Indi

April 21, 2025
Tuesday Snapshot – Vivaldi Browser snapshot 3621.3

Tuesday Snapshot – Vivaldi Browser snapshot 3621.3

March 5, 2025
I finally watched The Truman Show

I finally watched The Truman Show

April 6, 2025
Talent Agents Circle AI Actress Tilly Norwood

Talent Agents Circle AI Actress Tilly Norwood

September 27, 2025
Jason Kelce’s HILARIOUS Response To NBA Stars Wanting To Meet Taylor Swift!

Jason Kelce’s HILARIOUS Response To NBA Stars Wanting To Meet Taylor Swift!

September 27, 2025
Today’s best iPad deals include a record-low price on the latest iPad Air M3

Today’s best iPad deals include a record-low price on the latest iPad Air M3

September 26, 2025
Metro Boomin Found Not Liable In Sexual Assault Case: ‘I’m Grateful To Put This Behind Me’

Metro Boomin Found Not Liable In Sexual Assault Case: ‘I’m Grateful To Put This Behind Me’

September 26, 2025
King Charles pictured with walking stick in regal new portrait from Scottish home

King Charles pictured with walking stick in regal new portrait from Scottish home

September 26, 2025
See Channel, Schedule, Streaming Options – Hollywood Life

See Channel, Schedule, Streaming Options – Hollywood Life

September 26, 2025
Trump Signs off on TikTok Deal as China Weighs Details

Trump Signs off on TikTok Deal as China Weighs Details

September 26, 2025
No simulcast deal for Jays’ game Friday night

No simulcast deal for Jays’ game Friday night

September 26, 2025
New Self New Life

Your source for entertainment news, celebrities, celebrity news, and Music, Cinema, Digital Lifestyle and Social Media and More !

Categories

  • Celebrity
  • Cinema
  • Devices
  • Digital Lifestyle
  • Entertainment
  • Music
  • Social Media
  • Softwares
  • Uncategorized

Recent Posts

  • Talent Agents Circle AI Actress Tilly Norwood
  • Jason Kelce’s HILARIOUS Response To NBA Stars Wanting To Meet Taylor Swift!
  • Today’s best iPad deals include a record-low price on the latest iPad Air M3
  • Home
  • Disclaimer
  • DMCA
  • Privacy Policy
  • Cookie Privacy Policy
  • Terms and Conditions
  • Contact us

Copyright © 2021 New Self New Life.
New Self New Life is not responsible for the content of external sites. slotsfree  creator solana token

No Result
View All Result
  • Home
  • Entertainment
  • Celebrity
  • Cinema
  • Music
  • Digital Lifestyle
  • Social Media
  • Softwares
  • Devices

Copyright © 2021 New Self New Life.
New Self New Life is not responsible for the content of external sites.

New Self New Life