Powermail - UserFunc

Aus Wikizone
Wechseln zu: Navigation, Suche

Links:

https://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/UserAndUserInt/Index.html (User und user_int Objekte in TypoScript für userFunction)
https://docs.typo3.org/typo3cms/extensions/powermail/ForDevelopers/AddDataProcessors/Index.html (Powermail Data Prozessoren)

Wie kann man Werte für den Versand mittels PHP manipulieren und in Templates oder Feldern versenden / speichern. Einfache Dinge kann man bereits mit TypoScript erledigen und per View Helper ausgeben (siehe Powermail)

Für komplexere Dinge kann man eine UserFunc nutzen und mit dieser die Daten verarbeiten. Die Ausgabe erfolgt mittels ViewHelper oder aber auch prefill eines Formularfeldes. Darüber hinaus kann man auch hoch Powermails DataProcessor Funktionalität nutzen. Sie erlaubt es Funktionen zum manipulieren von Werten beim Absenden auszuführen.

Der ViewHelper[Bearbeiten]

In der Regel erzeugt man ein TypoScript Objekt (z.B. ein USER_INT Objekt) und gibt es an ein Feld in Powermail. Einfaches Beispiel:

# TypoScript Setup Example for ViewHelper {f:cObject(typoscriptObjectPath:'lib.test')}
lib.test = TEXT
lib.test.value = newReceiver@mail.com

es wird also ein TEXT Objekt erzeugt wie bekommt man es nach Powermail - mit dem TypoScript Objekt Viewhelper:

{f:cObject(typoscriptObjectPath:'lib.test')}

Diesen Platzhalter mit dem ViewHelper kann man an verschiedenen Stellen laut Powermail Doku unterbringen:

  • in HTML Templates (and Partial and Layout)
  • In jedem RTE Feld in den Forms
  • In the subject, receiver, receiverName, sender, senderName Feld

userFunc nutzen mit Extension[Bearbeiten]

Siehe auch: TYPO3 - userFunc Die user Functions werden ganz normal angelegt. Entweder direkt im Verzeichnis oder als Extensions (In TYPO3 V8 evtl. auch nur als Extension). Wie kann man in Powermail darauf zugreifen ? Zunächst unsere Beispiel Extension:

Eingesetzte Extension[Bearbeiten]

Dateien

typo3conf/ext/gbincludes/ext_emconf.php
typo3conf/ext/gbincludes/ext_icon.gif
typo3conf/ext/gbincludes/Classes/Powermail.php

ext_emconf.php

<?php
$EM_CONF[$_EXTKEY] = array(
    'title' => 'Userfunc Classes for Stephan Schlegel',
    'description' => 'Einbinden der Klassen für userFunc',
    'category' => 'fe',
    'author' => 'Stephan Schlegel',
    'author_email' => 'schlegel@geo-bit.de',
    'state' => 'beta',
    'author_company' => 'Geo-bit Reutlingen',
    'version' => '0.1.0',
    'constraints' => array(
        'depends' => array(
        ),
        'conflicts' => array(
        ),
        'suggests' => array(
        ),
    ),
);

Powermail.php

<?php
namespace Geobit\Gbincludes;
class Powermail {
    public function createKey($content, $conf) {
      $key = date("dmy-").uniqid();
      #$key = microtime();
      return $key;
    }
}

Beispiel: userFunc mit ViewHelper[Bearbeiten]

Hinweis jeder eingesetzte Viewhelper (z.B. einmal im Betreff und einmal im E-Mail Template) ruft das Skript einmal auf. Also oft suboptimal.

TypoScript

### TicketNr. für Powermail ###
# use {f:cObject(typoscriptObjectPath:'lib.myTicket')} in Powermail
lib.myTicket = USER
lib.myTicket {
  userFunc = Geobit\Gbincludes\Powermail->createKey
}

Beispiel: userFunc mit Prefill[Bearbeiten]

Das Beispiel setzt voraus, das ein Feld (z.b. hidden field) mit dem Variablennamen "ticket" existiert. Die Variable kann man mit dem Platzhalter {ticket} z.B. im Betreff oder dem Ausgabetemplate ausgeben.

plugin.tx_powermail.settings.setup.prefill {
  # {ticket} befüllen
  ticket = USER
  ticket.userFunc = Geobit\Gbincludes\Powermail->createKey
}