Closed cukabeka closed 5 years ago
Für MultiNewsletter gibt es das nicht speziell. Aber es müsste gehen, dass du 2 Actions definierst: eine zum Speichern in der DB und eine zum Versand der Mail. Da muss ich nichts spezielles programmieren.
Also, ich habe noch keine eigene Action gebaut, dazu ist mir das YFORM Action-Prinzip in Kombi mit dem FILTER-Stuff in dem MNL-Modul zu heiß 😅
Aber dafür habe ich im YFORM Formbuilder eine funktionierende Definition gefunden, evtl magst Du die ja in die Doku aufnehmen? Damit ist es möglich, auch unterschiedliche YREWRITE-Domains mit dem Newsletter-Addon zu bedienen. (Schick wäre hier noch, wenn ich pro Gruppe einen eigenen SMTP-Mailserver angeben könnte.. ;) )
Zudem ist das Styling und der Text der Subscribe-Box einfach selbst zu stylen.
objparams|form_skin|bootstrap
objparams|form_class|hide-label form-register
datestamp|activationkey|activationkey|NsB||0
hidden|status|0
hidden|clang_id|1
hidden|group_ids|2
datestamp|createdate|createdate|mysql
ip|createip
action|copy_value|createdate|updatedate
action|copy_value|createip|updateip
hidden|subscriptiontype|web
html||<div class="container"><div class="row"><div class="col-md-6"><h2>Hol Dir jetzt den Newsletter!</h2><p>Du bekommst eine Mail pro Woche mit den besten Sachen drin.</p></div><div class="col-md-6">
text|email|#placeholder:E-Mail|Deine E-Mail-Adresse
checkbox|privacy_policy_accepted|FORM_PRIVACY_NEWSLETTER|0,1|0|
submit|name|Ja, ich will!|submit|no_db|submit|btn btn-lg
html||</div></div>
validate|email|email|Bitte geben Sie die E-Mail ein.
validate|unique|email|Diese E-Mail existiert schon|rex_375_user
validate|empty|privacy_policy_accepted|Bitte bestätigen Sie, dass Sie die Datenschutzerklärung gelesen haben.
action|db|rex_375_user
action|tpl2email|bla_multinewsletter_request_de|email||Absender Newsletter|Anmeldung fehlgeschlagen - bitte eine Mail an newsletter@bla.de
Leider ist das activation-key-DB-Feld zu kurz, sonst wäre generate_key|activationkey eine elegante Möglichkeit gewesen.
Es braucht ein mail-template bla_multinewsletter_request_de, in dem der request definiert ist, bei mir wie folgt (HTML):
<?php
$url = rex_getUrl(112,'',[ 'activationkey' => REX_YFORM_DATA[field="activationkey"], 'email' => REX_YFORM_DATA[field="email"] ], '&');
markitup::parseOutput ('textile', '
Hallo,
danke für Dein Interesse! Du hast Dich mit folgender Mailadresse angemeldet:
E-Mail: REX_YFORM_DATA[field="email"]
Bitte bestätige Deine Anmeldung mit einem Klick auf folgenden Link:
"'.$url.'":'.$url.'
');
?>
Wobei in Artikel 112 nochmal das normale MNL-Modul für die Anmeldung nur mit E-Mail liegt.
//Update: in der tpl2mail war noch ein bug, ist jetzt gefixt
Vielen Dank. Da könnte man doch gleich ein Modul daraus bauen, das man zur Installation anbieten kann. Zuerst aber noch eine Frage: wie groß müsste das Feld für generate_key|activationkey sein? Das könnte man doch leicht mit dem nächsten Update anpassen.
Ah, das wäre natürlich cool. Hier ist ein Beispiel: bb04ea8bcf4e5cd58e87feda557f264c Es müssen also auch Kleinbuchstaben erlaubt sein. Und 32 Zeichen.
OK. Ist geändert. Nächste Frage: braucht es unbedingt ein eigenes Template oder könnte man das direkt im Modul lösen (siehe hier: https://github.com/TobiasKrais/d2u_helper/blob/4fb1d4009a28395e204baa3d64094ccdb8580c6f/modules/11/1/output.php#L67)?
Müsste eigentlich gehen. Es gibt doch die Möglichkeit, die ganzen Pipe Angaben oben in eine Variable zu setzen und dann zu parsen. Bei XFORM war das so:
$xform = new rex_xform();
//$xform->setDebug(true);
$xform->setRedaxoVars();
$form_data = '';
// hier nur als ausschnitt
$form_data .= '
objparams|form_skin|bootstrap
objparams|form_class|hide-label form-register
datestamp|activationkey|activationkey|NsB||0
hidden|status|0
hidden|clang_id|1
hidden|group_ids|2
datestamp|createdate|createdate|mysql
';
$xform->setFormData($form_data);
$xform->setObjectparams('form_class', 'form-horizontal');
$xform->setObjectparams('error_class', 'error');
echo $xform->getForm();
Ich verstehe noch nicht ganz, was du hier machst: https://github.com/TobiasKrais/d2u_helper/blob/4fb1d4009a28395e204baa3d64094ccdb8580c6f/modules/11/1/output.php#L67-L75a Nimmst Du ein Modul und befüllst es einfach mit Werten aus dem Yform Formular?
Hier wird der Mailinhalt zusammengebaut. Zum einen werden Sprachersetzungen aus SProg ausgelesen, zum anderen Platzhalter für YForm verwenden (z.B. ###name###). Hilft dir das weiter?
Im Repository gibt es jetzt die Module 80-4 und 80-5, die jeweils eine YForm An- und Abmeldung beinhalten. Wenn du willst, kannst du sie gerne testen. Du brauchst YForm 3.
3.2.3 ist veröffentlicht und beinhaltet die Module.
Eine Action für YForm ähnlich wie action|tpl2email|emailtemplate|emaillabel|[email@domain.de]|[email_name]|[Fehlermeldung wenn Versand fehgeschlagen ist/html] wäre super nützlich auf Multidomain-Installationen, um die Eintragungsformulare unabhängig vom Modul zu erstellen. Gibt es dazu was? Habe in den Snippets was gesehen, aber nicht verstanden, ob das dazu dient.