Individuelle Marker in Direct Mail

caticonslite_bm_alt

In einem Newsletter werden häufig auch benutzerspezifische Parameter abseits der standardmäßig vorhandenen benötigt, z.B. um die Anrede zu personalisieren (Sehr geehrte Frau bzw. Sehr geehrter Herr,…) oder um Felder aus marketingtechnischen Gründen (z.B. individueller Gewinncode) hinzuzufügen. Dies ist in der Direct Mail-Extension (Extensionkey: direct_mail), dank der Verwendung von Hooks, relativ einfach zu bewerkstelligen.

Zuerst muss man hierfür eine neue Extension erstellen, ich verwende hier den Extensionkey „direct_mail_markers“, um die benötigten Dateien irgendwo ablegen zu können. Als nächstes wird eine Klasse (samt entsprechender Methode), welche benutzerdefinierte Marker generiert, erstellt – im Ordner „Classes/Hooks/“ der Extension legt man eine Datei namens „DirectMailMarkers.php“ mit folgendem Inhalt an:

<?php
namespace WebentwicklerAt\DirectMailMarkers\Hooks;
 
class DirectMailMarkers
{
    /**
     * @param array $params
     * @return array
     */
    function mailMarkersHook(array $params)
    {
        // ###USER_salutation###
        $salutation = '';
        if (in_array($params['row']['gender'], array(0, 'm', 1, 'f')) && !empty($params['row']['last_name'])) {
            // gender
            if ($params['row']['gender'] === 0 || $params['row']['gender'] === 'm') {
                $salutation = 'Sehr geehrter Herr ';
            } else if ($params['row']['gender'] === 1 || $params['row']['gender'] === 'f') {
                $salutation = 'Sehr geehrte Frau ';
            } else {
                $salutation = 'Sehr geehrte(r) Herr/Frau ';
            }
 
            // title
            if (!empty($params['row']['title'])) {
                $salutation .= $params['row']['title'] . ' ';
            }
 
            // last_name
            $salutation .= $params['row']['last_name'];
        } else {
            $salutation = 'Sehr geehrte Damen und Herren';
        }
 
        $params['markers']['###USER_salutation###'] = $salutation;
 
        return $params;
    }
}

Diese Methode erzeugt abhängig vom Feld „gender“ die persönliche Anrede „Sehr geehrter Herr Nachname“„Sehr geehrte Frau Nachname“ oder wenn kein Nachname oder Geschlecht angegeben worden ist „Sehr geehrte Damen und Herren“. Zusätzlich wird der Titel – sofern angegeben – eingefügt.

Damit die soeben erstellte Hook-Methode verwendet wird und der generierte Marker ###USER_salutation### im Newsletter verwendet werden kann, muss diese in der„ext_localconf.php“ registriert werden:

<?php
 
if (!defined ('TYPO3_MODE')) die ('Access denied.');
 
// register directmail markers hook
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/direct_mail']['res/scripts/class.dmailer.php']['mailMarkersHook'][] = 'EXT:' . $_EXTKEY . '/Classes/Hooks/DirectMailMarkers.php:' . \WebentwicklerAt\DirectMailMarkers\Hooks\DirectMailMarkers::class . '->mailMarkersHook';

Nachdem die soeben erstellte Erweiterung über den Extensionmanager installiert worden ist, steht der generierte Marker im Newsletter zur Verfügung.

In der Datei composer.json der Installation ist folgender Eintrag für das Autoloading unter „autoload/psr-4“ zu ergänzen:

"autoload": {
  "psr-4": {
    "WebentwicklerAt\\DirectMailMarkers\\": "typo3conf/ext/direct_mail_markers/Classes/"
  }
}

Abschließend müssen die Autoloading-Informationen noch mit composer dump-autoload aktualisiert werden.

2 Antworten zu Individuelle Marker in Direct Mail
  1. Dino Antworten

    Wie kann ich das Skript so anpassen, dass es auch mit Typo3 7 bzw. mit directmail 5.1.1 funktioniert?

    Derzeit wird mein Marker schlicht nicht ersetzt … alle anderen wie z.B. ###SYS_AUTHCODE### werden wie gewohnt ersetzt.

    Freue mich über einen Tipp.

    • Gernot Leitgab Antworten

      Ich habe den Beitrag aktualisiert, sodass nun die Verwendung mit TYPO3 7.6 möglich ist.

Schreibe einen Kommentar

E-Mail-Adresse wird nicht veröffentlicht. Bitte Name, E-Mail-Adresse und Kommentar eingeben.