Waarschuwing
Kan map niet verwijderen. Pad: [ROOT]/cache/com_content
Bericht sluiten

Door: Sergey Tolkachyov.Categorie: Magazine.

Joomla e-mail templates: variabelen invoegen via plugin

 

In Joomla 5 hebben aanpasbare e-mailsjablonen hun intrede gedaan, zowel voor de kerncomponenten als voor componenten van derden. Ze kunnen (nog) niet zelfstandig worden toegevoegd; ze worden toegevoegd tijdens de installatie.

Emailsjablonen bewerken

Je kunt e-mailsjablonen bewerken door in het linker menu van je beheerpaneel te klikken op Systeem - Sjablonen - E-mailsjablonen.
Sinds Joomla 5.2 kun je het HTML-formaat gebruiken voor e-mailsjablonen. Wanneer je een sjabloon bewerkt, zie je dat variabelen zoals {USERNAME} of {SITENAME} in de tekst worden gebruikt. Maar wat als we onze eigen variabelen willen toevoegen aan het e-mailsjabloon?

Een gedetailleerde beschrijving van deze functie vereist een aparte, uitgebreide handleiding, maar we geven je hier een algemeen overzicht van de instellingen voor e-mailsjablonen.

E-mail templates settings in Joomla 5

Instellingen voor Joomla 5 e-mailsjablonen

Ga naar de instellingen voor e-mailsjablonen (de knop Componentopties in de rechterbovenhoek).

 

Daarna kun je het e-mailformaat selecteren: tekst of HTML. Vervolgens worden de lay-outinstellingen voor Joomla e-mailsjablonen beschikbaar. Deze globale parameters kunnen worden overschreven in elk specifiek e-mailsjabloon. Zo kun je je eigen lay-out en logo-instellingen specificeren voor elk van de e-mailsjablonen.

Joomla email templates settings for HTML layout and site logo in emails


Voor ontwikkelaars: hoe voeg ik mijn eigen variabelen toe aan Joomla e-mailsjablonen?

We zien verschillende shortcodes voor verschillende typen e-mails: {NAME}, {SITENAME}, {SITEURL}, enzovoort, die worden gebruikt in Joomla e-mailsjablonen. Maar wat als we onze eigen variabelen willen toevoegen aan het e-mailsjabloon?

edit email template in Joomla 5

 

Om dit te doen, moet je een eenvoudige plugin schrijven (zie de officiële documentatie voor ontwikkelaars). Een ontwikkelaar heeft hiervoor twee triggers beschikbaar:

  • onMailBeforeTagsRendering
  • onMailBeforeRendering

Plugin-trigger onMailBeforeRendering in Joomla

De trigger onMailBeforeRendering stelt je in staat om je eigen shortcodes toe te voegen voor tekstreplacing in de plugin. Je moet een array sturen in de vorm van [ variabele_naam => variabele_waarde ].
Vanuit het beheerpaneel voeg je je variabelen toe met accolades: {variabele_naam} wordt vervangen door variabele_waarde.



Het $event-argument van de plugin is een instantie van de BeforeRenderingMailTemplateEvent-klasse, die onder andere twee methoden heeft:

  • getTemplate() (haalt een mailer-object op waarin je je gegevens kunt toevoegen)
  • getTemplateId() (haalt de sjabloon-ID op van een e-mail, zoals com_users.registration.admin.new_notification), waarmee we bepalen of dit het juiste e-mailsjabloon voor ons is of niet.

Dit werkt op een vergelijkbare manier als de context in content-plugins.

Een andere nuttige klasse-eigenschap voor het overbrengen van gegevens van de plugin naar de lay-out van de e-mail voor weergave is $layoutTemplateData. Dit is een associatieve array.

Voorbeeldcode:
// Huidige mailer verkrijgen
$mailTemplate = $event->getTemplate();
$data = [
   'variable_name' => 'variable_value'
];
// Sinds Joomla 4 voor alle e-mailtypen. 2e argument - $plain - platte tekstindeling
$mailTemplate->addTemplateData($data, false);
// Sinds Joomla 5.2 - voor HTML-e-mails
$mailTemplate->addLayoutTemplateData($data);

// Een voorbeeld uit de Joomla-kern
$this->addLayoutTemplateData([
    'siteName' => $app->get('sitename'),
    'lang'     => substr($this->language, 0, 2),
]);

Methode onMailBeforeRendering

use Joomla\CMS\Event\Mail\BeforeRenderingMailTemplateEvent;

public function onMailBeforeRendering(BeforeRenderingMailTemplateEvent $event): void
{
        $templateId = $event->getTemplateId(); // ID van het e-mailsjabloon
        $template = $event->getTemplate(); // Haal het volledige e-mailobject op
        $data = [
                'variable_name' => 'waarde 1',
                'variable_name2' => 'waarde 2',
        ];

        $template->addTemplateData($data); 
        // of...
        $template->addLayoutTemplateData($data);
}

 

Plugin-trigger onMailBeforeTagsRendering in Joomla

De trigger onMailBeforeTagsRendering voegt je variabelen toe aan de lijst met beschikbare variabelen in het bewerkingsvenster van de Joomla e-mailsjabloon. Hiervoor moet een array worden aangemaakt met de namen van de variabelen, maar zonder hun waarden.

Voorbeeldcode:
public function onMailBeforeTagsRendering(Event $event): void
{
    [$templateId, $template] = $event->getArguments();
    $tags =  $template->params['tags']; // Standaard shortcodes ophalen
    $tags[] = 'my_custom_variable';
    $tags[] = 'my_custom_variable2';
    
    // We kunnen hier ook velden uit com_users ophalen
    $user_fields = FieldsHelper::getFields('com_users.user', true); // Gebruikersvelden ophalen
    $newtags = [];
    foreach($user_fields as $field) {
        $newtags[] = $field->name; // Voeg de veldnaam toe als variabele
    }
    $tags = array_merge($tags, $newtags); // Combineer beide arrays
    $template->params['tags'] = $tags; // Terugzetten
}

Resultaat:


We hebben aangepaste variabelen toegevoegd aan de e-mailsjablonen in Joomla! 🚀

Over Sergey Tolkachyov

Voor mij is Joomla al lange tijd een hobby – sinds 2008. In 2019 werd ik een Joomla-extensiesontwikkelaar en inmiddels ontwikkel en onderhoud ik meer dan 80 gratis extensies voor Joomla (zie https://web-tolk.ru). Sommige daarvan zijn beschikbaar in de Joomla Extensions Directory.

Ik ben een van de moderators van de Russischtalige Joomla-gemeenschap op Telegram. Ik publiceer berichten op het Joomla Feed Telegram-nieuwskanaal in het Russisch, schrijf Joomla-digests en artikelen over Joomla-ontwikkeling.

Echtgenoot. Vader van drie kinderen. Saratov, Rusland.

Dit artikel werd oorspronkelijk gepubliceerd in het Joomla Community Magazine.
Lees alle artikelen in het magazine via deze link
Joomla! bestaat al 19 jaar als Open Source project. Dat is een lange tijd in technologiejaren! 19 jaar geleden kon je niet eens een iPhone bezitten, of X gebruiken en waarschijnlijk had je geen Facebook-account maar een Hyves-account 😊.
Er is veel gebeurd, maar Joomla! is al die tijd een duurzame keuze gebleken als CMS voor miljoenen websites wereldwijd, ondersteund door een betrokken community.


1000 Resterende tekens


Deze site wordt beschermd door reCAPTCHA en Google Privacybeleid en Servicevoorwaarden zijn van toepassing.