Newsletter-Abonnenten-Management

Klassifikation

fp_newsletter

Version
Sprache

de

Beschreibung

Plugin für Newsletter An- und Abmeldung. Benutzte Tabelle: tt_address oder fe_users. Ein Log aller Aktionen wird erstellt.

Schlüsselwörter

tt_address,mail,luxletter,newsletter,subscription,unsubscription,dsgvo,gdpr

Copyright

2025

Autor

Kurt Gusbeth

Lizenz

Dieses Dokument wird unter der Open Publication License, siehe http://www.opencontent.org/openpub/ veröffentlicht.

Gerendert

Mon, 19 May 2025 15:01:11 +0000

Der Inhalt dieses Dokuments bezieht sich auf TYPO3, ein GNU/GPL CMS-Framework auf www.typo3.org.

Inhaltsverzeichnis

Einleitung

Was macht die Extension?

Die Extension fp_newsletter wurde dazu geschrieben, eine datenschutzkonforme An- und Abmeldung zu Newslettern zu ermöglichen. Unterstützte Tabellen: tt_address und fe_users. So kann z.B. die Extension mail oder luxletter zur Newsletter-Versendung benutzt werden. Sämtliche Aktionen werden in einer Log-Tabelle festgehalten, damit alle Aktionen der Benutzer überprüft werden können. Allerdings werden manche Einträge auch geändert und nicht immer neu angelegt. So kann man als Admin sehen, wer sich wann an- oder abgemeldet hat. Erst nach einer erfolgreichen Anmeldung werden die Daten in die tt_address-Tabelle kopiert. Die Extension kann allerdings auch ohne tt_address/fe_users benutzt werden. Es ist einstellbar, dass ein Admin den Anmeldewunsch per E-Mail bekommt. Dann könnte der Admin die E-Mail-Adresse händisch in einen externen Newsletter eintragen. Bei der Double-Opt-In-Anmeldung und ggf. auch bei der Abmeldung muss man den Datenschutzbestimmungen zustimmen. Google reCaptcha v3 oder ein mathematisches Captcha kann ggf. auch eingebunden werden. Es gibt auch ein Widget fürs Dashboard. Verfügbare Sprachen: englisch, deutsch, französisch und italienisch. Die Standard-Sprache ist deutsch, aber man kann auch andere Sprachen benutzen.

Achtung!

Diese Extension wurde nicht für multiple Newsletter-Kategorien designed. Man kann sich zwar zu mehreren Kategorien anmelden, aber es ist nicht möglich, sich nur von speziellen Kategorien abzumelden (bei der Abmeldung)! Der komplette Abonnent wird bei der Abmeldung gelöscht, sodass man sich nicht nur von einem speziellen Newsletter abmelden kann. Allerdings ist seit Version 4.1.0 eine Bearbeitung der Newsletter-Daten möglich! Im Bearbeiten-Formular stehen alle möglichen Kategorien zur Auswahl verfügbar.

Achtung!

Wenn man Version 6 mit TYPO3 11.5 benutzt, gibt es keine Vorschau (mehr) im Backend.

Screenshots

Einfache Ansicht des Anmelde-Formulars im FE:

Frontend page

Anmelde-Formular.

Danke an ...

Diese Extension wurde programmiert von der fixpunkt für digitales GmbH, Bonn und fixpunkt stellt sie der TYPO3-Community zur Verfügung.

Benutzerhandbuch

Die Extension kann über TypoScript und FlexForms konfiguriert werden. Benutzer werden eher die FlexForms benutzen. Hier ein Beispiel einiger FlexForm-Einstellungen:

Backend view

Die Backend-Ansicht (BE)

Zahlreiche Links können für die Zielseiten spezifiziert werden.

Der Abmeldelink muss per TypoScript oder via FlexForms angegeben werden und es muss eine Extra-Seite für die Abmeldung geben. Hier eine Beispiel-Konfiguration:

Beispiel-Konfiguration

Beispiel-Konfiguration des Plugins

Beachte: in den Formularen sind die Felder E-Mail und DSGVO obligatorisch. Andere Felder sind optional: siehe im Kapitel Konfiguration.

Administrator-Handbuch

Man braucht nicht unbedingt die Extension tt_address und mail, um diese Extension benutzen zu können. Es geht auch ohne, aber mehr Sinn macht es schon, wenn man die Tabellen tt_address oder fe_users benutzt. Die Tabelle fe_users kann man zusammen mit der Extension Luxletter oder Mail benutzen. Benutzer können sich dann zum Newsletter anmelden, wenn die Tabelle tt_address oder fe_users in der Newsletter-Extension benutzt wird.

Templates

Man findet 4 Ordner mit Templates: Backend, Widget, Email und Log. Backend und Widget wird nur im Backend verwendet. Im Log-Ordner findet man die Templates für die Formulare. Wenn ein Benutzer solch ein Formular absendet, landen die Daten in der Tabelle tx_fpnewsletter_domain_model_log. Erst nachdem ein Benutzer seine E-Mail-Adresse verifiziert hat, werden die Daten in die Tabelle tt_address oder fe_users kopiert.

Im Email-Ordner findet man die Templates, die per E-Mail verschickt werden. Es gibt E-Mail-Templates für die Verifizierung der E-Mail-Adresse und für den Admin. UserToAdmin wird vor der Verifikation benutzt und SubscribeToAdmin nach der Verifikation der E-Mail-Adresse. Zum ändern der Templates muss man sie z.B. nach fileadmin kopieren und den Link dazu angeben:

plugin.tx_fpnewsletter.view.templateRootPaths.1 = fileadmin/bsdist/theme/tmpl/fp_newsletter/Templates/
Copied!

Es gibt eine Text- und eine HTML-Version für die E-Mails. Da kann man die Variable {sys_language_uid} in den E-Mail-Templates verwenden. Man kann also mit Hilfe von <f:if condition="{sys_language_uid} == 1"> mehrere Sprachen in einem Template verwenden.

Man kann folgende keys in den E-Mail-Templates benutzen: email.dear-gender-first-and-last-name, email.dear-first-and-last-name, email.dear-first-name, email.dear, email.gender-first-and-last-name, email.first-and-last-name und email.first-name.

Beachte

Standardmässig wird neben der E-Mail-Adresse auch Anrede und Name in den E-Mails verwendet. Es wird empfohlen, diese zu highlighten, um Spam/Pishing-Emails vorzubeugen.

Wichtig

Seit Version 5.x wird nicht nur ein Plugin-Name verwendet. In manchen Fällen muss man deshalb leider die Templates anpassen und entweder den pi-Parameter hinzufügen oder entfernen! Beispielsweise bei der Abmeldeseite ohne Verifizierung-Seite.

Anmeldeformular auf jeder Seite

Du willst ein Anmeldeformular in dein Seiten-Template einbauen? Z.B. auf jeder Seite in den Footer? Da gibt es 2 Möglichkeiten.

Erste Möglichkeit: füge ein statisches Formular in dein Footer-Template ein. Diese Extension kann die Parameter aus diesem Formular auslesen. Lies das Kapitel "Konfiguration -> Externe Felder" für mehr Details dazu.

Zweite Möglichkeit: du kannst ein Plugin via f:cObject typoscriptObjectPath in dein Template einbauen. Beispiel:

<f:cObject typoscriptObjectPath="lib.nlsubscriptionContent" />
Copied!

Dafür musst du lib.nlsubscriptionContent in deinem TypoScript-Template wie folgt definieren:

lib.nlsubscriptionContent = CONTENT
lib.nlsubscriptionContent {
  table = tt_content
  wrap = |
  select {
    pidInList = 22
    where = colPos = 0
  }
}
Copied!

Ersetze 0 und 22 durch die colPos und page-uid, welche du benutzt hast auf der Seite mit dem Anmelde-Plugin. Falls du das Anmelde-Plugin von fp_newsletter benutzt, solltest du das cachable Anmelde-Formular dort auswählen. In dem Fall muss noch eine Seite für die Anmeldung definiert werden, wohin das Formular umleiten soll. Ein mathematisches Captcha ist bei diesem cachable Anmelde-Formular nicht möglich!

Verwendung von anderen Anreden in den E-Mails

Wenn man die verwendeten Anreden nicht mag, kann man sie via TypoScript ändern. Siehe Kapitel Konfiguration/TypoScript Referenz. Wenn man jedoch für Herr und Frau unterschiedliche Anreden will, muss man die Datei Partials/Email/Salutation.html ändern. Beispiel:

<f:if condition="{gender_id}==1 && {lastname}">
  <f:then>
    <f:translate key="email.dear-mrs-last-name" arguments="{0: lastname}" extensionName="FpNewsletter" languageKey="{language_code}" />
  </f:then>
</f:if>
<f:if condition="{gender_id}==2 && {lastname}">
  <f:then>
    <f:translate key="email.dear-mr-last-name" arguments="{0: lastname}" extensionName="FpNewsletter" languageKey="{language_code}" />
  </f:then>
</f:if>
Copied!

Nun kann man neues TypoScript-Settings hinzufügen. TypoScript-Beispiel für das obige Partial:

plugin.tx_fpnewsletter._LOCAL_LANG.de.email.dear-mr-last-name = Sehr geehrter Herr %s,
plugin.tx_fpnewsletter._LOCAL_LANG.de.email.dear-mrs-last-name = Sehr geehrte Frau %s,

Copied!

Verwendung eigener Kategorien/Gruppen

Ab Version 8.2.0 kann man eigene Kategorien oder Gruppen im Template verwenden. Zuerst mnuss man dazu die Einstellung settings.categoryOrGroup z.B. auf 1 setzen auf der Anmeldeseite:

plugin.tx_fpnewsletter.settings.categoryOrGroup = 1
Copied!

Zweitens muss man die Einstellung settings.categoryOrGroup leeren auf der Verifikationsseite:

plugin.tx_fpnewsletter.settings.categoryOrGroup =
Copied!

Drittens fügt man seine eigenen Kategorien oder Gruppen im Template Partials/Log/FormFields.html hinzu. Dazu ersetzt man diese Zeile:

<f:form.hidden property="categories" value="{settings.categoryOrGroup}" id="fp_categories" />
Copied!

durch soetwas:

<div class="form-group">
  <label class="form-label" class="form-label">Choose a group:</label>
  <div class="form-check">
      <label for="fp_category_1" class="form-check-label">
          <f:form.radio class="form-check-input radiobox categories" id="fp_category_1" property="categories" value="3" /> Greenhorn
      </label>
  </div>
  <div class="form-check">
      <label for="fp_category_2" class="form-check-label">
          <f:form.radio class="form-check-input radiobox categories" id="fp_category_2" property="categories" value="4" /> Kunde
      </label>
  </div>
  <div class="form-check">
      <label for="fp_category_3" class="form-check-label">
          <f:form.radio class="form-check-input radiobox categories" id="fp_category_3" property="categories" value="5" /> Mitarbeiter
      </label>
  </div>
</div>
Copied!

Nun werden die gespeicherten Werte übernommen statt die von settings.categoryOrGroup.

Achtung: auf der Abmeldeseite muss settings.categoryOrGroup auch z.B. auf 1 gesetzt sein.

Achtung: das ganze wurde nicht mit der Bearbeiten-Seite getestet.

Anmerkung für die Mail-Extension

Wenn man die Mail-Extension benutzt, kann man die Tabellen tt_address oder fe_users benutzen. Wenn man tt_address benutzt, werden diese zusätzlichen Felder befüllt: mail_html, mail_salutation und mail_active. Wenn man fe_users benutzt, werden diese zusätzlichen Felder befüllt: mail_html, mail_salutation, mail_active und categories von categoryOrGroup. Es wird keine Gruppe zugewiesen!

Anmerkung für die Luxletter-Extension

Wenn man die Luxletter-Extension benutzt, kann man nur die Tabelle fe_users verwenden. Diese zusätzlichen Felder werden befüllt: Gruppe von categoryOrGroup und wenn die Setting newsletterExtension=luxletter gesetzt ist: luxletter_language.

Abmelden via Mail-Extension

Wenn du einen Newsletter verschickst, soll darin sicherlich auch ein Abmeldelink drin stehen. Das kann man so machen, wenn man mail benutzt:

Newsletter abbestellen:
https://www.domain.de/newsletter/abmelden.html?email=###USER_email###&authcode=###MAIL_AUTHCODE###
Copied!

Ersetze den Link durch deine Abmeldeseite und füge ihn in dein Newsletter-Template oder den Newsletter-Inhalt ein. ###USER_email### und ###MAIL_AUTHCODE### wird von mail automatisch ersetzt. Der email- und authCodeFields-Parameter kann so geändert werden via TypoScript:

plugin.tx_fpnewsletter.settings.parameters.email = email
plugin.tx_fpnewsletter.settings.parameters.authcode = authcode
Copied!

Die Extension fp_newsletter wird die Parameter lesen und die E-Mail als Default-E-Mail-Adresse setzen oder den Abonnenten gleich abmelden. Achtung: bei der Zielseite muss dabei das Plugin "Newsletter: Abmeldung via Formular" oder "Newsletter: Abmeldung via mail-Link" ausgewählt sein. In letzterem Fall muss auch settings.authCodeFields gesetzt werden. Nachteil: man kann sich mit fp_newsletter nicht nur von einem speziellen Newsletter abmelden. Man wird von allen abonnierten Newslettern eines Ordners abgemeldet.

Abmelden via Luxletter-Extension

Luxletter bietet auch einen Abmeldelink an. Zusätzlich bietet Luxletter ein Plugin, mit dem man sich aus dem Newsletter austragen kann. Wenn man das Plugin benutzt, wird kein Log-Eintrag von fp_newsletter geändert. Der Status ändert sich also nicht. Zudem wird nur die fe_groups Kategorie beim Abonnenten gelöscht.

Einen ganz anderen Weg beschreitet fp_newsletter, wenn man auf der Zielseite "Newsletter: Abmeldung via luxletter-Link" benutzt. In diesem Fall wird der Log-Eintrag aktuell gehalten und weiterhin wird nicht nur eine Kategorie beim Abonnenten entfernt, sondern der ganze fe_users-Eintrag wird gleich gelöscht. Nachteil: man kann sich mit fp_newsletter nicht nur von einem speziellen Newsletter abmelden. Man wird von allen abonnierten Newslettern eines Ordners abgemeldet.

Beispiel für einen Abmelde-Link:

<f:link.external uri="{luxletter:mail.getUnsubscribeUrl(newsletter:newsletter,user:user,site:site)}" additionalAttributes="{data-luxletter-parselink:'false'}" target="_blank" style="font-family:'FiraSans-Light', 'Helvetica Neue', Arial, sans-serif;">
  Newsletter abbestellen
</f:link.external>
Copied!

Setze plugin.tx_fpnewsletter.settings.unsubscribeMode = 1 wenn stattdessen erst das Abmeldeformular gezeigt werden soll.

Captchas

Man kann 3 verschiedene Captcha-Methoden benutzen. 2 davon kann man via TypoScript-Einstellungen konfigurieren. Siehe Kapitel "Configuration". Die 3. Methode ist eine spezielle Lösung, die PHP-Kenntnisse voraussetzt, weil man noch 1-2 weitere Extensions dafür benötigt.

Diese Extension stellt ein Validate-Event zur Verfügung, welches im New.html Template dieser Extension wie folgt benutzt werden kann:

 <html xmlns:fp="https://typo3.org/ns/YourVendor/YourExtension/ViewHelpers" xmlns:f="https://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
   ...
   <f:form action="create" name="log" pluginName="new" object="{log}">
	<f:render partial="Log/FormFields" arguments="{_all}" />
	<fp:form.friendlyCaptcha name="captcha_solution">
		<div class="frc-captcha" data-sitekey="{settings.site_key}" data-solution-field-name="{name}" data-start="focus"></div>
	</fp:form.friendlyCaptcha>
	<div class="text-right">
		<f:form.submit value="{f:translate(key: 'subscribe', default: 'subscribe')}" class="btn btn-primary" />
	</div>
</f:form>
   ...
 </html>

 Füge xmlns:fp="https://typo3.org/ns/YourVendor/YourExtension/ViewHelpers" hinzu und ersetzte YourVendor und YourExtension.
 Füge <fp:form.friendlyCaptcha name="captcha_solution">...</fp:form.friendlyCaptcha>
 hinzu und passe es an deine Extension an. Füge die TypoScript settings "site_key" hinzu.
 Bemerkung: diese Zeilen zeigen nur ein Beispiel für eine "friendly captcha" Lösung.

 Weiterhin braucht man einen Event-Listener in der eigenen Captcha-Extension. Er sollte so in etwa aussehen::

   use YourVendor\YourExtension\Services\CaptchaService;
   use Fixpunkt\FpNewsletter\Events\ValidateEvent;
   use TYPO3\CMS\Extbase\Utility\DebuggerUtility;
   use Psr\Http\Message\ServerRequestInterface;

   class NewsletterValidationListener
   {

       /** @var CaptchaService  */
       protected CaptchaService $captchaService;

       /**
        * @param CaptchaService $captchaService
        */
       public function __construct(CaptchaService $captchaService) {
           $this -> captchaService = $captchaService;
       }

       /**
        * Checks if the captcha was solved correctly.
        * @param ValidateEvent $event
        * @return void
        */
       public function __invoke(ValidateEvent $event) : void {
           /** @var ServerRequestInterface $request */
           $request = $GLOBALS['TYPO3_REQUEST'];

           $pluginName = "tx_fpnewsletter_pi1";

           // see if data was provided
           if(!key_exists($pluginName, $request -> getParsedBody()) || !is_array($request -> getParsedBody()[$pluginName])) {
               $event -> setValid(false);
               return;
           }

           [...]

           // validate solution
           $solution = $request -> getParsedBody()[$pluginName]["captcha_solution"];
           $valid = $this -> captchaService -> validate($solution);
           if(!$valid["verified"]) {
               $event -> setValid(false);
               $event -> setMessage("Captcha not valid");
           }
       }
   }

Copied!

Weitere Felder zu tt_address hinzufügen

Wenn du weitere Felder zu tt_address hinzufügen möchtest, dann müssen diese Felder sowohl in der Log-Tabelle (tx_fpnewsletter_domain_model_log) als auch in der tt_address-Tabelle vorhanden sein. Wenn sie noch nicht da sind, müssen sie in einer Extension in der Datei ext_tables.sql hinzugefügt werden. Beispiel: du willst das Feld "gdpr" nach tt_address kopieren. Dieses Feld ist in der Log-Tabelle bereits vorhanden und deshalb muss es nur noch zur tt_address-Tabelle von dir hinzugefügt werden. Danach muss man noch per TypoScript angeben, welche zusätzlichen Felder mit kopiert werden soll:

plugin.tx_fpnewsletter.settings.additionalTtAddressFields = gdpr
Copied!

Das ist alles.

Sicherheitshinweis zu Version 3.2.6

Falls du eine ältere Version benutzt, solltest du folgendes über die behobenen Fixes wissen:

  1. Man konnte bisher alle Newsletter-Empfänger abmelden.
  2. Der TypoScript-Wert für plugin.tx_fpnewsletter.settings.doubleOptOut wurde auf 1 gesetzt. Du könntest diesen Wert auch auf 1 setzen, falls nichts gegen double-opt-out bei der Abmeldung spricht.
  3. Es war möglich, beim mathematischen Captcha-Check zu mogeln.
  4. Es war möglich, Daten über andere Newsletter-Empfänger bei der An- oder Abmeldung zu erfahren.

Deshalb sollte man unbedingt updaten!

Updaten auf Version 6.x

Weil der Support für die Extension direct_mail in Version 6.0.0 entfernt wurde, wurden auch manche TypoScript-Variablen umbenannt! Leider gibt es nur ein Update-Skript, welches die alten Variablen in FlexForms umbenennt. Du musst nun also selber im TypoScript-Setup und in HTML-Templates Anpassungen vornehmen. Das heißt, du musst gesetzte TypoScript-Variablen selber umbenennen und in eigenen HTML-Dateien (FormFields.html und FormFieldsEdit.html) Felder umbenennen. Betroffen sind diese 3 TypoScript-Settings:

  1. "dmUnsubscribeMode" wurde umbenannt zu "unsubscribeMode".
  2. "module_sys_dmail_html" wurde umbenannt zu "html".
  3. "module_sys_dmail_category" wurde umbenannt zu "categoryOrGroup".

FAQ

  • Es läuft nicht richtig. Was kann ich tun?

    Möglicherweise muss man die storagePID doppelt angeben: via Plugin und via TypoScript. Beachte, dass man für die Abmeldung eine eigene Seite braucht!

  • Ein Link funktioniert nicht so wie er sollte. Was ist falsch?

    Seit Version 5.x gibt es mehr als nur ein Plugin (pi1). Vielleicht ist ein falsches Plugin im Link? Siehe Kapitel "Wichtig" weiter oben.

  • Die Domain fehlt im Link in der E-Mail. Wieso?

    TYPO3 9 ignoriert anscheinend den Parameter absolute="1"? Oder du hast keine Domain im Backend angegeben? Füge die Domain dann selber hinzu.

  • Was ist der username wenn ich die Tabelle fe_users verwende?

    Als username wird die E-Mail-Adresse verwendet. Das Standard-Passwort ist joh316. Die Gruppe setzt man mittels categoryOrGroup.

  • Ich benutzte die fe_users Tabelle, aber es passiert nichts.

    Hast du auch settings.categoryOrGroup gesetzt?

  • Ich benutzte die tt_address Tabelle, aber nicht die mail-Extension und es passiert nichts.

    Hast du auch settings.html=-1 gesetzt? Für das HTML-Feld wird nämlich direct_mail/mail benötigt.

  • Ich brauche / will keine Log-Einträge. Kann man das ausschalten?

    Nicht ganz. Man kann nur alte Log-Einträge automatisch löschen lassen. Dazu fügt man einen Task "Tabellen-Müllsammlung" hinzu und wählt da die Tabelle tx_fpnewsletter_domain_model_log aus. Dann kann man angeben, nach wie vielen Tagen ein Log-Eintrag gelöscht werden soll. Wenn der ConJob läuft, werden alte Log-Einträge dann automatisch gelöscht.

Konfiguration/TypoScript Referenz

Hier sieht man, welche TypoScript-Einstellungen (settings) vorgenommen werden können. Es gibt mehr TypoScript-Einstellungen als FlexForm-Einstellungen, was bedeutet, dass man nicht alles per FlexForms einstellen kann.

Wichtig: für fp_newsletter-Versionen < 6 sollte man hier nachsehen: https://docs.typo3.org/p/fixpunkt/fp-newsletter/5.2/de-de/Configuration/Index.html

Settings-Einstellungen

Feld Typ Beschreibung Standard-Wert
table string tt_address, fe_users, other oder leerer Wert (= keine ext. Tabelle) tt_address
newsletterExtension string luxletter (default für fe_users), mail (default für tt_address) o. other leer = luxletter
optionalFields string Optionale Werte: siehe weiter unten gender,firstname,lastname
optionalFieldsRequired string Optionale erforderliche* Werte: siehe weiter unten  
doubleOptOut boolean Double opt out Abmeldung einschalten? 1
disableErrorMsg boolean Manche Fehlermeldungen ignorieren (z.B. bereits/nicht angemeldet)? 0
enableUnsubscribeForm boolean Abmeldeformular auf der Anmeldeseite mit ausgeben?** 0
enableUnsubscribeGdprAsHidden boolean DSGVO-Checkbox beim Abmeldeformular verbergen? 0
enableEditForm boolean Bearbeiten-Formular auf der Anmeldeseite mit ausgeben?** 0
subscribeUid integer Seite für die Anmeldung 1
subscribeMessageUid integer Optionale Seite für einen Redirect nach der Anmeldung  
subscribeVerifyUid integer Seite für die Anmelde-Verifikation  
subscribeVerifyMessageUid integer Optionale Seite für den Redirect nach der Anmelde-Verifikation  
unsubscribeUid integer Seite für die Abmeldung 1
unsubscribeMessageUid integer Optionale Seite für den Redirect nach der Abmeldung  
unsubscribeVerifyUid integer Seite für die Abmelde-Verifikation (demnächst)  
unsubscribeVerifyMessageUid integer Optionale Seite für den Redirect nach der Abmelde-Verifikation***  
resendVerificationUid integer Seite, auf der man die Verifizierungsemail erneut anfordern kann  
editUid integer Seite, auf der man seit Abonnement bearbeiten kann  
gdprUid integer Seite mit den DSGVO-Texten 1
daysExpire integer Der Verifikations-Link wird ungültig nach X Tagen 2
searchPidMode integer Suche in Ordnern: 0: nur im 1. Ordner; 1: in allen Ordners° 0
deleteMode integer 1: delete-Flag; 2: lösche endgültig; 3: lösche nur Kat./Gruppe; 4: hidden 1
languageMode integer 0: setzt -1 wenn L>0; 1: benutzte die sys_language_uid von pages 0
categoryMode integer 0: nur angegebene Kategorien bei Edit erlauben; 1: alle 1
unsubscribeMode integer 0: Sofort-Abmeldung durch Link aus Luxletter; 1: zeige Abmeldeform 0
categoryOrGroup string Liste von Kategorien (uid) aus sys_category oder fe_groups°°  
html integer 0: nur TEXT; 1: TEXT und HTML; -1: ignoriere Felder der mail-Extens. 1
password string Passwort für die fe_users Tabelle. random erzeugt ein zufälliges Pw. random
authCodeFields string Kopiere "Fields ... of authentication codes" von mail hierhin  
reCAPTCHA_site_key string Websiteschlüssel für Google reCaptcha v3.  
reCAPTCHA_secret_key string Geheimer Schlüssel für Google reCaptcha v3  
mathCAPTCHA integer Zeige ein mathematisches Captcha? 0: nein; 1, 2: ja, mit 1-2 Ziffern 0
honeypot boolean Einen Honigtopf (honeypot) gegen Spam einschalten? 0
debug boolean Sendet keine E-Mails wenn debug=1 0
checkForRequiredExtensions boolean Prüfen, ob benötigte Extensions installiert sind? 0: nein; 1: ja. 1
company string Name der Firma Ihre Firma
gender.please string Text für die Anrede-Auswahl Bitte auswählen
gender.mr string Text für Herr Herr
gender.mrs string Text für Frau Frau
parameters.active string Parameter für Anmeldung aus externer Extension (POST-Parameter)  
parameters.email string Parameter für die E-Mail externer Herkunft (GET/POST-Parameter)  
email.senderMail string E-Mail-Adresse des Absenders beispiel@test.de
email.senderName string Absender-Name Absender-Name
email.subscribeVerifySubject string Betreff der Verifikations-E-Mail (Anmeldung) Bitte verifizieren ...
email.unsubscribeVerifySubject string Betreff der Verifikations-E-Mail (Abmeldung) Bitte verifizieren ...
email.adminMail string Admin E-Mail-Adresse - wenn nicht leer: der Admin wird informiert  
email.adminName string Admin-Name Admin
email.adminSubscribeSubject string Betreff der Admin-E-Mail (Anmeldung) Neue Newsletter-Anmeldung
email.adminUnsubscribeSubject string Betreff der Admin-E-Mail (Abmeldung) Neue Newsletter-Abmeldung
email.adminMailBeforeVerification boolean 0: sende die E-Mail nach der Verifikation; 1: vor der Verifikation 0
email.subscribedSubject string Betreff der Bestätigungsmail (Anmeldung) Bestätigung Newsletter-Anmeldung
email.unsubscribedSubject string Betreff der Bestätigungsmail (Abmeldung) Bestätigung Newsletter-Abmeldung
email.editSubject string Betreff der Bearbeiten-Email Ändern Sie Ihr Newsletter-Abo...
email.enableConfirmationMails boolean Sende eine Bestätigungs-E-Mail an den Benutzer? 0: nein; 1: ja 0
email.dontAppendL boolean Hänge die Sprach-UID an Templates an (wenn L>0)? 0: ja; 1: nein°°° 1
overrideFlexformSettingsIfEmpty string Leere Flexforms sollen durch TypoScript überschrieben werden alle uid-Variablen

Achtung*: die optional erforderlichen Werte werden nur per Browser geprüft.

Achtung**: man braucht eine eigene Seite für die Abmeldung/Bearbeitung. unsubscribeUid/editUid muss also angegebenen werden.

Achtung***: diese Seite wird auch dann benutzt, wenn doubleOptOut=0. unsubscribeMessageUid wird dann nicht benutzt.

Achtung°: dies funktioniert nur bei der Abmeldung.

Achtung°°: Kommaseparierte Liste. Beispiel: 1,3. Also ohne Leerzeichen dazwischen. Erforderlich für externe Extensions!

Achtung°°°: der Default-Wert wurde von 0 auf 1 geändert in Version 3.0.0 und selbst wenn L=0 wird ab Version 3.0.0 0 an den E-Mail-Template-Namen angehangen wenn email.dontAppendL=0.

Beispiele

Sprachen

Man kann die Texte für andere Sprachen so überschreiben (falls preferXlfFile=0, sonst siehe letzte Zeile):

[siteLanguage("languageId") == "1"]
plugin.tx_fpnewsletter.settings.company = Your company
plugin.tx_fpnewsletter.settings.gender.please = Please select your gender
plugin.tx_fpnewsletter.settings.gender.mr = Mr.
plugin.tx_fpnewsletter.settings.gender.mrs = Mrs.
plugin.tx_fpnewsletter.settings.email.senderMail = example@test.com
plugin.tx_fpnewsletter.settings.email.senderName = Sender-name
plugin.tx_fpnewsletter.settings.email.subscribeVerifySubject = Please verify your email
plugin.tx_fpnewsletter.settings.email.unsubscribeVerifySubject = Please verify your email
plugin.tx_fpnewsletter.settings.email.adminSubscribeSubject = New newsletter-subscription
plugin.tx_fpnewsletter.settings.email.adminUnsubscribeSubject = New newsletter-unsubscription
plugin.tx_fpnewsletter.settings.email.subscribedSubject = Newsletter-subscription confirmation
plugin.tx_fpnewsletter.settings.email.unsubscribedSubject = Newsletter-unsubscription confirmation
[END]
plugin.tx_fpnewsletter._LOCAL_LANG.de.email.pleaseVerify = Bitte verifiziere deine E-Mail-Adresse durch Klick auf diesen Link:
Copied!

Achtung: wenn man den Text der Standardsprache überschreiben will, entfernt man die beiden Zeilen: [siteLanguage("languageId") == "1"] und [END].

Falls man die Setting preferXlfFile=1 setzt, kann man die Texte (Betreff und Anrede) so überschreiben:

plugin.tx_fpnewsletter._LOCAL_LANG.en.email.subscribedSubject = Your newsletter subscription is now confirmed
plugin.tx_fpnewsletter._LOCAL_LANG.de.email.subscribedSubject = Deine Newsletter-Anmeldung ist nun bestätigt
Copied!

Achtung: wenn man andere Sprachen in den Emails verwenden will, sollte man das Kapitel "Administrator-Handbuch" lesen. Bei settings.email.dontAppendL=0 ist die Standardsprache deutsch. Diese Templates enden ab Version 3.0.0 mit 0.html. Ab Version 3.0.0 werden in den E-Mail-Templates ohne Zahl-Endung übersetzte Texte verwendet.

Deprecation: dontAppendL wird in Version 8.0.0 entfernt. Auch alle Templates mit der Endung 0 und 1.

Externe Felder

Man kann auch eine Default-E-Mail-Adresse aus den Parametern auslesen und übernehmen. Wenn man z.B. im Footer ein Formular mit einem E-Mail-Feld hat, welches nlemail heißt, kann man den abgesendeten Wert wie folgt auslesen lassen:

plugin.tx_fpnewsletter.settings.parameters.email = nlemail

Copied!

Man kann die Anmeldung auch über ein externes Formular durchführen lassen. Wenn man z.B. einen Shop hat, wo man sich zum Schluß bei einer Bestellung auch zum Newsletter anmelden können soll, dann muss man diese Extension unter die Shop-Extension einfügen und das Template "Anmeldung über externe Extension" auswählen. Zudem muss man die POST-Parameter angeben, die ausgewertet werden sollen:

plugin.tx_fpnewsletter.settings.parameters.active = tx_myshop_pi1|newBestellung|newsletter
plugin.tx_fpnewsletter.settings.parameters.email = tx_myshop_pi1|newBestellung|email
Copied!

Es können an dieser Stelle nur Parameter von anderen Extensions mit dem selben Format ausgewertet werden. Wenn beide Parameter gesetzt sind, wird zur Action create weitergeleitet.

Achtung:

Wenn man bei den Einstellungen "[FE][cacheHash][enforceValidation] = 1" gesetzt hat, muss man diesen Parameter unter "[FE][cacheHash][excludedParameters]" mit hinzufügen!

Captchas

Man kann 3 verschiedene Captcha-Typen benutzen. Wenn man das Google reCaptcha v3 benutzen will, muss man nur den website key und den secret key angeben. Wenn man stattdessen ein mathematisches Captcha benutzen will, kann man 1 oder 2 Ziffern verwenden. Der maximale Wert bei 2 Ziffern ist 19. Beispiel:

plugin.tx_fpnewsletter.settings.mathCAPTCHA = 2
Copied!

Als 3. Option kann man auch ein ganz anderes Captcha benutzen, z.B. Friendly Captcha. Eine Anleitung dazu findet man im Kapitel "Administration".

Optionale und erforderliche Felder

Nur email und gdpr sind erforderliche Felder im Modell. Wenn man mehr erforderliche Felder haben will, kann man sie nur via TypoScript und Templates als erforderlich markieren. Folgende optionalen Felder sind möglich/stehen zur Verfügung: gender, title, firstname, lastname, address, zip, city, region, country, phone, mobile, fax, www, position, company. Man kann alle diese Felder auch als erforderlich markieren. Hier ein Beispiel für das Anmeldeformular via TypoScript Setup:

plugin.tx_fpnewsletter.settings.optionalFields = gender,title,firstname,lastname,www,position,company
plugin.tx_fpnewsletter.settings.optionalFieldsRequired = firstname,lastname,company
Copied!

Benutzung von Kategorien

Die Tabelle sys_category enthält Kategorien für mail. So benutzt man sie:

plugin.tx_fpnewsletter.settings.categoryOrGroup = 1,3
Copied!

Es werden dann 2 Einträge in sys_category_record_mm gemacht und in tt_address wird categories gesetzt (nach der Verifikation).

Die Kategorien werden als hidden-Feld ins Template eingefügt. Wenn man eine flexiblere Lösung will, könnte man z.B. Checkboxes per jQuery auswerten und die angeklickten Kategorien ins hidden-Feld kopieren.

Genau so kann man auch Gruppen für fe_users angeben. Das gilt nur für die Extension Luxletter. Wenn newsletterExtension=mail gesetzt ist, werden keine Benutzer-Gruppen beachtet. Dann werden nur Kategorien benutzt.

Beachte: wenn deleteMode=3 gesetzt ist, werden nur die Kategorien entfernt, die unter categoryOrGroup angegeben sind. Und das Feld mail_active wird auf 0 gesetzt, wenn newsletterExtension=mail gesetzt ist.

Ändern der Labels

Wie in jeder Extension auch, kann man die Labels via TypoScript ändern. Hier 2 Beispiele:

plugin.tx_fpnewsletter._LOCAL_LANG.de.tx_fpnewsletter_domain_model_log.email = Email
plugin.tx_fpnewsletter._LOCAL_LANG.de.tx_fpnewsletter_domain_model_log.gdpr_desc2 = Ich bin damit einverstanden, dass die von mir angegebenen Daten elektronisch erhoben und gespeichert werden.
Copied!

Man findet die Bezeichnungen in den Templates bei f:translate key.

Benötigte Extensions

Standardmäßig überprüft die Extension in der Action new (Anmeldeformular), ob die benötigten Extensions installiert sind. settings.table kann leer, tt_address oder fe_users sein. Bei tt_address wird auch die Extension mail benötigt, wenn man entweder settings.html oder settings.categoryOrGroup verwendet. Die Überprüfung kann man ausschalten:

plugin.tx_fpnewslettersettings.checkForRequiredExtensions = 0
Copied!

Achtung: wenn man bei den Einstellungen zu Newsletter Extension "other"/"andere" auswählt, dann wird settings.html=-1 gesetzt, da nicht klar ist, welche html-Felder andere Extensions haben.

Komplettes Beispiel

Hier ein komplettes Beispiel für Luxletter und 2 Sprachen:

plugin.tx_fpnewsletter.view.templateRootPaths.10 = EXT:example/Resources/Private/Ext/fp_newsletter/Templates/
plugin.tx_fpnewsletter.view.partialRootPaths.10 = EXT:example/Resources/Private/Ext/fp_newsletter/Partials/
plugin.tx_fpnewsletter.settings {
    table = fe_users
    optionalFields =
    doubleOptOut = 0
    enableUnsubscribeGdprAsHidden = 1
    honeypot = 1
    preferXlfFile = 1
    gdprUid = 1138
    subscribeUid = 1167
    unsubscribeUid = 1002
    subscribeVerifyUid = 1001
    categoryOrGroup = 19
    company = Ihre Online-Redaktion von „Test“
}
plugin.tx_fpnewsletter._LOCAL_LANG.de {
    subscribe = Absenden
    tx_fpnewsletter_domain_model_log.email = E-Mail-Adresse
    tx_fpnewsletter_domain_model_log.gdpr_desc1 = Ich habe die
    tx_fpnewsletter_domain_model_log.gdpr_link_text = Datenschutzerklärung
    tx_fpnewsletter_domain_model_log.gdpr_desc2 = zur Kenntnis genommen und bin damit einverstanden, dass meine Daten unter Beachtung der gesetzlichen Bestimmungen satzungsgemäß verwendet und automatisiert verarbeitet werden.
    unsubscribe_it = Newsletter abbestellen
    email_send1 = Vielen Dank für Ihr Interesse.<br>Eine Bestätigungs-E-Mail wurde Ihnen zugesandt.
    email_verified = Ihre E-Mail-Adresse wurde erfolgreich aufgenommen.
    email_removed = Sie haben sich erfolgreich von unserem Newsletter abgemeldet.
    email.pleaseVerify = Sie haben sich für unseren Newsletter angemeldet.
    email.pleaseVerify2 = Um die Anmeldung zu bestätigen, klicken Sie bitte auf folgenden Link:
    email.subscribeVerifySubject = Anmeldung zum Newsletter bei www.test.de
}
plugin.tx_fpnewsletter._LOCAL_LANG.en {
    subscribe = Send
    required = required
    tx_fpnewsletter_domain_model_log.email = E-mail address
    tx_fpnewsletter_domain_model_log.gdpr_desc1 = I have noted the
    tx_fpnewsletter_domain_model_log.gdpr_link_text = privacy policy
    tx_fpnewsletter_domain_model_log.gdpr_desc2 = and I agree that my data will be used in accordance with the statutory provisions and processed automatically.
    unsubscribe_it = Unsubscribe newsletter
    email_send1 = Thank you for your interest.<br>A confirmation email has been sent to you.
    email_verified = Your email address has been successfully added.
    email_removed = You have successfully unsubscribed from our newsletter.
    email.pleaseVerify = You've signed up for our newsletter.
    email.pleaseVerify2 = To confirm the registration, please click on the following link:
    email.subscribeVerifySubject = Registration for the newsletter at www.test.com
}
[siteLanguage("languageId") == 1]
    plugin.tx_fpnewsletter.settings.company = Your online editors of “Test”
[END]
Copied!

Wie man sehen kann, kann man auch eigene Variablen definieren und verwenden. Hier z.B.: unsubscribe_it.

Bekannte Probleme

Die Domain fehlt in den E-Mails wenn man TYPO3 9 benutzt? Dann muss man die Domain in der Site-Verwaltung angeben!

Der Modus unsubscribeMode=1 funktioniert nur, wenn auch unsubscribeUid gesetzt ist.

Es scheint ein TYPO3-Bug zu geben, wo die Abmelde-Seite nicht funktioniert. In solch einem Fall sollte man versuchen, die settings.unsubscribeUid via FlexForms zu setzen. Bei mir funktionierte es dann.

Seit Version 5.x wird nicht nur ein Plugin-Name verwendet. In manchen Fällen muss man deshalb leider die Templates anpassen und entweder den pi-Parameter hinzufügen, ändern oder entfernen bei f:form oder f:link.external!

Seit Version 5.x werden E-Mail-Inhalte nicht übersetzt, wenn man settings.email.dontAppendL=1 setzt.

Einen Bug-Tracker für diese Extension findet man bei GitHub.

To-Do-Liste

  • Probleme mit weiteren Sprachen beheben.

Änderungen

Version 0.10.0: Wichtige Änderung: plugin.tx_fpnewsletter_pi1 umbenannt nach plugin.tx_fpnewsletter, weil sonst leere TypoScript-Werte vorhandene FlexForm-Werte überschreiben. Neue action: subscribeExt für eine Newsletter-Anmeldung über externe Extensions (z.B. Shops). Bugfix: partial-Pfad.

Version 0.10.2: Links in den E-Mail-Templates verändert (noCache statt noCacheHash). Bugfix 2: die Texte-E-Mails wurden bisher überschrieben.

Version 0.11.0: Die Links in den E-Mail-Templates funktionieren nun endlich auch mit TYPO3 8. Leere FlexForms werden nun durch die TypoScript-Einstellungen überschrieben.

Version 0.12.0: double opt out wird jetzt auch unterstützt. Mehr FlexForms.

Version 0.13.0: italienische Übersetzung hinzugefügt. Erste Version für TYPO3 9 (läuft nur, wenn auch typo3db_legacy installiert ist).

Version 0.14.0: composer-Datei hinzugefügt. E-Mail an einen Admin nun möglich. Einen Bug gefixt: email-check.

Version 0.15.0: Geschlecht Divers hinzugefügt. Switch zum QueryBuilder (statt $GLOBALS['TYPO3_DB']). reCaptcha v3 eingebaut (optional).

Version 0.16.0: f:format.raw zu Text-Links hinzugefügt. Option module_sys_dmail_category hinzugefügt. Address-Objekt in Verify-Templates jetzt verfügbar. TS optionalFieldsRequired hinzugefügt. required-Attribut hinzugefügt.

Version 0.17.0: neue TypoScript-Einstellung: email.adminMailBeforeVerification E-Mail an den Admin nun vor oder nach der Verifizierung. Standardverhalten geändert! E-Mail an den Admin nun nur noch in einer Sprache. Noch ein letztes $GLOBALS['TYPO3_DB'] ersetzt.

Version 0.18.0: optionales mathematisches Captcha hinzugefügt. Setze sys_language_uid=-1 wenn l>0. Die Kategorien werden nun auch im Log-Eintrag gespeichert. Mehr optionale Felder: address, zip, city, region, country, phone, mobile, fax, www, position, company.

Version 1.0.0: Möglichkeit hinzugefügt, alte Log-Einträge automatisch via Task zu löschen. Wichtige Änderung: bei Email-Format- oder Captcha-Fehlern wird zurück zur new- oder unsubscribe-Action geleitet. Bugfix: man kann jetzt reCAPTCHA und mathCAPTCHA zusammen benutzen.

Version 1.0.4: Bugfix: Anmeldung via externem Formular.

Version 1.1.0: honeypot hinzugefügt. Bugfix: Fehlermeldung verhindern beim abmelden, wenn ein Captcha aktiviert ist.

Version 1.2.0: veraltete Methoden ersetzt.

Version 2.0.0: über die Einstellung languageMode kann man nun die Sprache der Einträge bestimmen. Das Verhalten bei Sprachen>0 ist nun anders. Zudem ist die Einstellung email.dontAppendL neu. Bestätigungsmails können nun gesendet werden, wenn man sie per settings.email.enableConfirmationMails aktiviert. Der Viewhelper f:translate kann nun auch in den E-Mail-Templates benutzt werden. Anrede und Name werden nun ggf. in den E-Mail-Templates benutzt. Mehr FlexForms.

Version 2.1.0: Einstellung searchPidMode und disableErrorMsg hinzugefügt. extension-key zu composer.json hinzugefügt.

Version 2.2.1: Mehr translate keys für E-Mail-Templates hinzugefügt. Siehe Kapitel Administration. Jetzt für TYPO3 10 und 11.

Version 2.3.2: Ein Widget für das Dashboard hinzugefügt. Die Extension Dashboard wird in TYPO3 11 benötigt. Setting checkForRequiredExtensions hinzugefügt (funktioniert aber nicht für Dashboard in TYPO3 11). Es kann nun auch die Tabelle fe_users benutzt werden! Ein Formular mit Button zu den Verifizierung-E-Mails hinzugefügt. no-cache Parameter entfernt.

Version 2.4.0: Setting dmUnsubscribeMode hinzugefügt. Flexform für "Abmeldung via Link" muss neu gespeichert werden. Die Extension Dashboard wird nicht mehr zwingend benötigt in TYPO3 11. Neues Feature: sende Verifizierungs-E-Mail erneut. Französisch hinzugefügt (Dank an lucmuller). StopActionException beim create, wenn kein Parameter vorhanden ist.

Version 3.0.0: Achtung: Default-Wert von email.dontAppendL von 0 auf 1 geändert. Die E-mail-Templates ohne Zahlen-Endung enthalten nun übersetzte Texte. Wenn email.dontAppendL=0 wird nun auch bei L=0 0 and den Template-Namen angehangen. Französische E-Mails nun möglich (Dank an lucmuller). Bugfix: Formular durch normalen Button in E-Mails ersetzt.

Version 3.1.0: Die Anrede in den E-Mails wurde in ein Partial verschoben. Das Geschlecht divers wird in den E-Mails nicht mehr bei der Anrede berücksichtigt. Der Name ist nun auch in der E-Mail an den Admin bei der Abmeldung verfügbar. Neues Dashboard-Widget: Status-Diagramm. Bugfix: die Spalte retoken war zu klein.

Version 3.2.0: module_sys_dmail_category ist nun auch per FlexForms einstellbar. Wichtig: Layout angepasst an Bootstrap 4. IDs im Abmeldeformular geändert. Backend: Vorschau hinzugefügt.

Version 3.2.5:

  • Switch von cURL zu RequestFactory.
  • Bugfix: no categories added in tt_address.

Version 3.2.6:

  • PHP-E-Mail-Validierung hinzugefügt.
  • Security fix: das Standard-Passwort für fe_users durch ein Zufallspasswort ersetzt.
  • Security fix: mathematical-captcha-check erweitert (man konnte bisher mogeln).
  • Security fix: settings.doubleOptOut von 0 auf 1 gesetzt. Kann man auf 0 setzen, wenn man kein double opt out beim abmelden haben will.
  • Security fix: einen weiteren Check zur Abmelde-Funktion hinzugefügt (man konnte bisher alle Empfänger abmelden).
  • Security fix: "Information Disclosure" in der new- und unsubscribe-action.

Version 4.0.0/1:

  • Achtung: das default TypoScript für die Sprache sys_language_uid 1 wurde entfernt!
  • Neue Actions: Abmeldung via Luxletter und cachebares Formular für die Anmeldung.
  • Neuer Task: importiere Newsletter-Abonnenten von tt_address nach fe_users.
  • Setting preferXlfFile hinzugefügt. Anreden und E-Mail-Betreff kommen aus der xlf-Datei anstatt aus den Settings, wenn 1.

Version 4.0.3:

  • Compatibility to direct_mail 11 added.
  • Bugfix: PHP 8 und delete-action.

Version 4.1.0:

  • Edit/Update-Action hinzugefügt.
  • Neue TypoScript-Variablen: enableEditForm, editUid, categoryMode und editSubject.

Version 5.0:

  • Überarbeitet für TYPO3 12 LTS.
  • Breaking: die Email-Templates und -Partials müssen angepasst werden! extensionName="FpNewsletter" muss zu jedem f:translate hinzugefügt werden.
  • Breaking: in Template-Formularen muss das Argument pluginName angegeben werden! Man findet den nötigen Wert in den Templates der Extension.
  • Breaking: alle Plugins müssen via ein Update-Skript (im Install-Tool) geändert werden!

Version 5.1:

  • "Custom validator" hinzugefügt, welcher für andere Captcha-Lösungen benutzt werden kann.
  • Bugfix für TYPO3 12.

Version 5.2:

  • Es wird nun automatisch der passende PluginName in Templates gesetzt.
  • PHP-Bugfix.

Version 6.0.0:

  • Breaking: der Support für direct_mail wurde entfernt. Stattdessen wird nun die Extension "mail" unterstützt.
  • Breaking: die TypoScript-settings dmUnsubscribeMode, module_sys_dmail_html, module_sys_dmail_category wurden umbenannt zu unsubscribeMode, html, categoryOrGroup. Siehe Kapitel Administrator / Updaten auf version 6.x.

Version 6.1.0:

  • Kompatibilität zu TYPO3 11.5 erneut hinzugefügt.
  • Bugfix: Sprache zu den Links in den E-Mails hinzugefügt.

Version 6.2.0:

  • fe_users kann nun mit der Extension Luxletter oder Mail benutzt werden.
  • deleteMode 3 hinzugefügt: lösche nur Kategorien (Mail) oder Benutzergruppe (Luxletter).
  • Neue Einstellungsmöglichkeit: newsletterExtension (mail oder luxletter).

Version 6.3.0:

  • Neue action: direkte Abmeldung via Mail-Link und neue setting: authCodeFields.

Version 6.3.1:

  • Bugfix: Luxletter ist nun die Standard Newsletter-Extension - um eine PHP-Warnung zu verhindern.

Version 6.3.2:

  • Bugfix: reCAPTCHA repariert.

Version 6.4.0:

  • Zusätzliche Felder können nun aus dem Log-Eintrag in eine tt_address-Tabelle kopiert werden. Setting additionalTtAddressFields hinzugefügt.

Version 7.0.0/1:

  • Refactoring mit dem rector-Tool.
  • Der Sprach-Code wird nun bei f:translate in den E-Mail-Templates hinzugefügt.
  • TypoScript-Dateien haben nun die Endung .typoscript.
  • Die setting dontAppendL ist nun deprecated.
  • Bugfix: Suche in allen Ordners greift nun öfters.

Version 7.0.3:

  • Bugfix: Backend-Vorschau.
  • Bugfix: Plugin-Updater.

Version 7.0.4:

  • Unnötige SQL-Felder entfernt.

Version 7.0.5:

  • deleteMode 4 (hidden-Flag setzen) hinzugefügt.

Version 7.1.0:

  • SwitchableControllerActionsPluginUpdater (Update-Skript für TYPO3 12) entfernt. Benutze eine ältere Version, falls noch benötigt.
  • FlexformPluginUpdater (Update-Skript für FlexForms) entfernt. Benutze eine ältere Version, falls noch benötigt.

Version 8.0.0:

  • Erste beta Version für TYPO3 13.
  • Breaking: setting dontAppendL entfernt: Templates mit Sprach-ID am Ende entfernt.
  • Breaking: setup.ts und constants.ts entfernt. Die .typoscript-Dateien sind freilich noch da.

Version 8.0.1:

  • Neue Flexform-Einstellungen: newsletterExtension und table. "other" setzt settings.html auf -1.
  • Zweites Widget gefixt. Backend-Vorschau geht wieder. Import-Task gefixt für TYPO3 13.

Version 8.0.4:

  • Edit-plugin geändert: Schritt 1 ist nun die default-Ansicht.
  • Bugfix: Abmeldung wenn Captcha aktiviert + Abmeldung aus Luxletter.

Version 8.0.5:

  • Bugfix: E-Mail an den Admin.

Version 8.1.0:

  • Mehr Informationen zu den Log-Einträgen hinzugefügt.

Version 8.1.1:

  • Bugfix: aktualisiere das Log auch wenn keine E-Mail versendet wird.

Version 8.2.0:

  • Speichere immer settings.categoryOrGroup im Log-Eintrag.
  • Benutze die Kategorien/Gruppen vom Log-Eintrag, wenn settings.categoryOrGroup leer ist.

Version 9.0.0:

  • Breaking: die PlugIns wurden von list_type nach CType geändert. Man muss den Upgrade Wizward ausführen, um seine PlugIns zu aktualisieren.
  • Deprecation fixes für PHP 8.4 und TYPO3 13.