对象已移动

可在此处找到该文档 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

How to Be the Leader Your Web Design Clients Need — Speckyboy
Softwares

How to Be the Leader Your Web Design Clients Need — Speckyboy

by admin
August 4, 2025
New tool offers direct lighting control for photographs using 3D scene modeling
Softwares

New tool offers direct lighting control for photographs using 3D scene modeling

by admin
August 3, 2025
Laravel ONDC Connector – Webkul Blog
Softwares

Laravel ONDC Connector – Webkul Blog

by admin
August 2, 2025
The hidden crisis behind AI’s promise: Why data quality became an afterthought
Softwares

The hidden crisis behind AI’s promise: Why data quality became an afterthought

by admin
July 31, 2025
Lazarus Group hackers increase open-source weaponisation
Softwares

Lazarus Group hackers increase open-source weaponisation

by admin
July 30, 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
Instagram Adds New Teleprompter Tool To Edits

Instagram Adds New Teleprompter Tool To Edits

June 11, 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
The hidden crisis behind AI’s promise: Why data quality became an afterthought

The hidden crisis behind AI’s promise: Why data quality became an afterthought

July 31, 2025
I Tried Calocurb For 90 Days. Here’s My Review.

I Tried Calocurb For 90 Days. Here’s My Review.

January 8, 2025
TikTok Publishes Report on Top UK Product Trends

TikTok Publishes Report on Top UK Product Trends

August 3, 2025
Abbotsford, B.C., denies permit for MAGA singer

Abbotsford, B.C., denies permit for MAGA singer

August 2, 2025
Ultra-Mini Qi2 Magnetic Power Bank with Kickstand from Baseus is now available on Amazon

Ultra-Mini Qi2 Magnetic Power Bank with Kickstand from Baseus is now available on Amazon

July 30, 2025
Thursday’s Workwear Report: Twist-Detail T-shirt

Thursday’s Workwear Report: Twist-Detail T-shirt

July 31, 2025
Song Young-kyu, South Korean Actor, Dead at 55

Song Young-kyu, South Korean Actor, Dead at 55

August 5, 2025
Celebrity Deaths of 2025: Chuck Mangione, More Stars We’ve Lost

Celebrity Deaths of 2025: Chuck Mangione, More Stars We’ve Lost

August 5, 2025
Donald Trump Gave Prince Andrew 'A List Of Masseuses' After Gross Convo, Claims Book

Donald Trump Gave Prince Andrew 'A List Of Masseuses' After Gross Convo, Claims Book

August 5, 2025
Diddy’s Ex-Girlfriend Wants Him Released Ahead Of Sentencing

Diddy’s Ex-Girlfriend Wants Him Released Ahead Of Sentencing

August 4, 2025
Ozzy Osbourne’s Cutest Family Photos with Kids and Grandchildren

Ozzy Osbourne’s Cutest Family Photos with Kids and Grandchildren

August 4, 2025
Liam Neeson, Pamela Anderson Get Nod From Natasha Richardson’s Sister

Liam Neeson, Pamela Anderson Get Nod From Natasha Richardson’s Sister

August 4, 2025
How Much Money the Late Actress Made – Hollywood Life

How Much Money the Late Actress Made – Hollywood Life

August 4, 2025
AI Prompts That Go Beyond Content Creation

AI Prompts That Go Beyond Content Creation

August 4, 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

  • Song Young-kyu, South Korean Actor, Dead at 55
  • Celebrity Deaths of 2025: Chuck Mangione, More Stars We’ve Lost
  • Donald Trump Gave Prince Andrew 'A List Of Masseuses' After Gross Convo, Claims Book
  • 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