Ergebnis 1 bis 11 von 11

Thema: Double-Opt-In für Formulare

  1. #1
    Contao-Nutzer
    Registriert seit
    05.07.2022.
    Beiträge
    7

    Standard Double-Opt-In für Formulare

    Hallo,

    ist es möglich, die interne OptIn-Implementierung von Contao relativ einfach über ein eigenes Skript "anzusteuern"?

    Mehrere Formulare mit einer Checkbox für zusätzliche Newletteranmeldung, und der jeweiligen Verarbeitung mit Mailversand im Notification Center existieren schon. Allerdings noch ohne das Double-Opt-In. Die Generierung des Tokens fürs Double-Opt-In wollte ich kompakt einfügen, bevor die Daten im Notification Center weiterverarbeitet werden:
    PHP-Code:
    namespace App\EventListener;

    use 
    Contao\CoreBundle\DependencyInjection\Attribute\AsHook;
    use 
    Contao\Form;

    #[AsHook('prepareFormData')]
    class PrepareFormDataListener
    {
        public function 
    __invoke(array &$submittedData, array $labels, array $fieldsForm $form): void
        
    {
            
    // Hier soll ein OptIn Token generiert werden
            
    $submittedData['opt-in-link'] = "http://beispiel.url?token=123";
        }

    Eine grobe Herangehensweise für das Double-Opt-In wird in der Dokumentation beschrieben: https://docs.contao.org/dev/reference/services/#optin
    Allerdings fehlt mir da einiges an Hintergrundwissen über Contao/Symfony...

    Eine kompakte Lösung wüde mir vorschweben, die dann ungefähr so aussehen könnte:

    PHP-Code:
    $token $this->optIn->create('exampl-'$submittedData['email'], ['tl_example' => [$model->id]]);
    $submittedData['opt-in-link'] = "http://beispiel.url?token=".$token
    Wie gesagt fehlt mir das Wissen um das "Drumherum" von Contao. Also ob es eine einfache Möglichkeit gibt, z.B. über Dependency Injection an ein OptIn-Objekt zu kommen, das dann das macht was ich vorhabe, oder ob ich mit meinen Kentnissen da lieber die Finger von lassen sollte

    Ich bin über jede Hilfe dankbar!

    LG

  2. #2
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    Für Contao 4.13 und Contao Leads 1.x: https://extensions.contao.org/?q=con...tao-lead-optin

    Dieser Fork ist für Contao Leads 3.x und Contao 4.13 bzw. 5.3 freigegeben: https://extensions.contao.org/?q=con...bundle#require

  3. #3
    Contao-Nutzer
    Registriert seit
    05.07.2022.
    Beiträge
    7

    Standard

    Zitat Zitat von zoglo Beitrag anzeigen
    Für Contao 4.13 und Contao Leads 1.x: https://extensions.contao.org/?q=con...tao-lead-optin

    Dieser Fork ist für Contao Leads 3.x und Contao 4.13 bzw. 5.3 freigegeben: https://extensions.contao.org/?q=con...bundle#require
    Danke, darauf war ich schon gestoßen, allerdings wird Leads derzeit nicht verwendet, und ich kann nicht abschätzen wie aufwändig eine Umstellung wäre und ob eine Lösung die auf der Erweiterung für OptIn bei Leads basiert zukünftig bei Contao Updates zu Kompatibilitätsproblemen führen könnte...

  4. #4
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    Eventuell habe ich mich auch verlesen und du möchtest nur ein Opt-In haben, damit die Daten gespeichert werden.
    Diese müssten aber irgendwo zwischengespeichert werden, daher die Option über contao-leads und contao-leads-optin.

    Natürlich kannst du dir das selbst programmieren, habe ich hier vor Jahren auch schonmal gemacht und kann heute sicherlich schöner programmiert werden.
    Dennoch brauchst du hier mehr als nur das. Auch einen Cronjob, der die Daten nach Nichtaktivierung löscht, du möchtest diese ja zwischenspeichern können?
    https://github.com/oveleon/contao-re....php#L405-L512

    Das Leads-Optin regelt das für dich.

  5. #5
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    Zitat Zitat von asw Beitrag anzeigen
    bei Contao Updates zu Kompatibilitätsproblemen führen könnte...
    Kann es bei Eigenprogrammierung auch - Entweder du programmierst dir was eigenes über die Opt-In Geschichte von Contao (Auch wenn zweckentfremdet) und hoffst darauf, dass dies nicht mit der nächsten Contao-Version rausfliegt (News-Bundle / Blog-Bundle / Verbessertes Optin / @internal?) oder, dass jemand in 2030 auch contao-leads und contao-leads-optin weiter entwickelt.

  6. #6
    Contao-Nutzer
    Registriert seit
    05.07.2022.
    Beiträge
    7

    Standard

    Zitat Zitat von zoglo Beitrag anzeigen
    Eventuell habe ich mich auch verlesen und du möchtest nur ein Opt-In haben, damit die Daten gespeichert werden.
    Diese müssten aber irgendwo zwischengespeichert werden, daher die Option über contao-leads und contao-leads-optin.

    Natürlich kannst du dir das selbst programmieren, habe ich hier vor Jahren auch schonmal gemacht und kann heute sicherlich schöner programmiert werden.
    Dennoch brauchst du hier mehr als nur das. Auch einen Cronjob, der die Daten nach Nichtaktivierung löscht, du möchtest diese ja zwischenspeichern können?
    https://github.com/oveleon/contao-re....php#L405-L512

    Das Leads-Optin regelt das für dich.
    Genau, im Prinzip habe ich für alles Drumherum (Formulare und Mails) eine Lösung. Im Prinzip hält mich Contao nur auf, denn mit einer eigenen Lösung wüsste ich zumindest was zu tun ist So wie ich es verstanden habe, macht die in Contao integrierte OptIn-Implementierung (laut Dokumentation) genau das was du beschrieben hast, also Token generieren, Daten speichern und nach Timeout löschen. https://docs.contao.org/dev/reference/services/#optin Meine Frage wäre nur, ob es ohne tieferes Wissen ist sich diese Implementierung zu nutze zu machen. Leider finde ich dazu nirgendwo etwas...

  7. #7
    Contao-Nutzer
    Registriert seit
    05.07.2022.
    Beiträge
    7

    Standard

    Zitat Zitat von zoglo Beitrag anzeigen
    Kann es bei Eigenprogrammierung auch - Entweder du programmierst dir was eigenes über die Opt-In Geschichte von Contao (Auch wenn zweckentfremdet) und hoffst darauf, dass dies nicht mit der nächsten Contao-Version rausfliegt (News-Bundle / Blog-Bundle / Verbessertes Optin / @internal?) oder, dass jemand in 2030 auch contao-leads und contao-leads-optin weiter entwickelt.
    Das stimmt natürlich. Eine Umstellung auf Leads wäre kein größerer Aufwand? Das war eben auch noch eine Frage, die ich nicht gut abschätzen konnte...

  8. #8
    Contao-Nutzer
    Registriert seit
    05.07.2022.
    Beiträge
    7

    Standard

    Zitat Zitat von zoglo Beitrag anzeigen
    Eventuell habe ich mich auch verlesen und du möchtest nur ein Opt-In haben, damit die Daten gespeichert werden.
    Es geht schon explizit um das Opt-In. Der Newsletter selbst läuft nicht über Contao sondern extern, es soll dann nur eine Mailbestätigung an den Admin erfolgen wenn das Opt-In vom Besucher bestätigt ist.

  9. #9
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    Eigentlich nur, dass man in jedem Formularfeld eine Checkbox hat, dass man die Daten "speichern" will.

    Wenn du schon das ganze drumherum hast, warum nicht über den Opt-In-Service regeln ?
    https://docs.contao.org/dev/reference/services/#optin

    Einfach genauso nutzen wie es beschrieben ist

    Ansonsten anhand meines "alten" Beispiels anschauen oder im comments-bundle
    Geändert von zoglo (03.04.2024 um 18:36 Uhr)

  10. #10
    Contao-Nutzer
    Registriert seit
    05.07.2022.
    Beiträge
    7

    Standard

    Zitat Zitat von zoglo Beitrag anzeigen
    Eigentlich nur, dass man in jedem Formularfeld eine Checkbox hat, dass man die Daten "speichern" will.

    Wenn du schon das ganze drumherum hast, warum nicht über das Opt-In regeln ?
    https://docs.contao.org/dev/reference/services/#optin
    Ok, dann wäre die Lösung mit Leads und der Leads-Optin-Erweiterung auf jeden Fall eine Option.

    Genau den Gedanken hatte ich auch dass das so am "elegantesten" wäre, allerdings blicke ich einfach nicht wirklich durch, da mir die Zusammenhänge vom Contaodrumherum fehlen. Vor allem wäre schonmal die Frage, woher man das OptIn-Objekt bekommt, das ist in der Dokumentation für mich nicht ersichtlich. Über Dependency Injection?

  11. #11
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    459

    Standard

    Zitat Zitat von asw Beitrag anzeigen
    Über Dependency Injection?
    Yep, im constructor.

    In meinem Beispiel rufe ich es aber als Service Container ab, im Comments Bundle ist es genauso.
    Läuft über autowiring automatisch im App Namespace wie in der Doku beschrieben.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •