Skip to content

alexplusde/yform_field

Repository files navigation

🧩 Zusätzliche Values, Validates und Actions für REDAXO 5 YForm 4

Das Addon yform_field ergänzt YForm um weitere Feldtypen, Validierungen und Aktionen.

Features

  • E-Mail Attachments - nur eine Zeile, um Anhänge aus Formularen an E-Mails zu hängen
  • Echtes Datetime-Value - optimierte HTML5-Ausgabe mit optionaler Einschränkung per min/max-Auswahl
  • be_media mit Bildvorschau - zeigt statt der Dateinamen die gewählten Bilder als Vorschau
  • be_manager_relation als SET - erweitert be_manager_relation um die Möglichkeit, ein Feld als echtes DB-Feld SET anzulegen
  • YRewrite-Domains - SELECT-Auswahl mit der System-Domain und allen YRewrite-Domains (sofern installiert)
  • Tabs - Formular-Felder in Tabs gruppieren

blaupause test_redaxo_index php_page=yform_manager_table_field table_name=rex_staff func=choosenadd list=731ec268

Installation

  • Im REDAXO-Backend unter Installer abrufen und
  • anschließend unter Hauptmenü > AddOns installieren.

Die gewünschten Feldtypen, Validierungen und Actions stehen automatisch bereit.

Feldtypen

datetime_local HTML5-Eingabefeld

Stellt ein Eingabefeld für Datum + Uhrzeit zur Verfügung

image

domain Auswahlfeld

Stellt ein Select-Feld vom Typ multiple zur Verfügung, in dem als Auswahl die System-Domain (bzw. "alle") zur Verfügung steht, oder bei installiertem YRewrite auch alle passenden Domains.

image

be_media_preivew mit Bildvorschau

Erzeugt in der YForm Datentabelle eine Vorschau des aktuell gewählten Bilds

image

be_manager_relation_set SET als Datenbankfeldtyp

Exakt dasselbe Feld wie be_manager_relation nur mit der zusätzlichen Auswahlmöglichkeit des Datenbankfeldtyps SET, verwendbar in allen 1:n-Beziehungen, die direkt im Feldwert gespeichert werden.

Tipp: Ändere in der Datenbanktabelle yform_field die Felddefinition deines bestehenden be_manager_relation-Felds zu be_manager_relation_set und lösche den REDAXO-Cache, statt das Feld zu löschen und neu anzulegen.

be_user_select - REDAXO-Benutzer zuordnen

Ähnlich zu be_user mit dem Unterschied, den Backend-Benutzer zuweisen zu können, bspw. für zusätzliche Rechtevergabe oder Verantwortlichkeiten.

choice_html HTML innerhalb des durch Choice erzeugten Labels erlauben

Erlaubt HTML in der Ausgabe des Labels von choice, was auch gemäß HTML5 möglich ist, um bspw. ein Bild anstelle oder zusätzlich zur Auswahl zu stellen.

Tipp: Ändere in der Datenbanktabelle yform_field die Felddefinition deines bestehenden choice-Felds zu choice_html und lösche den REDAXO-Cache, statt das Feld zu löschen und neu anzulegen.

form_url - Erfahre, von wo das Formular abgeschickt wurde

Nützlich für statistische Zwecke, wenn ein Formular seitenübergreifend eingebunden wurde und man wissen möchte, von wo es ausgefüllt wurde.

privacy_policy - AGB und Tracking-Einverständnis abfragen

Stellt auf Basis einer regulären Checkbox weitere Eingabe-Informationen zur Verfügung, um bspw. auf AGB oder Datenschutzerklärung hinzuweisen, wie in diesem Beispiel:

image

Pipe-Schreibweise: name|label|no_db|attributes|notice|output_values|text|linktext|article_id

tabs - Formular-Felder in Tabs gruppieren

Ähnlich wie bei Fieldsets können Formulare über Tab-Sets optisch strukturiert werden. Dazu wird das Tab-Value am Anfang einer Feldgruppe eingefügt. Nach der letzten Gruppe muss ein abschließendes Tab-Value gesetzt werden.

Im Formular sind mehrere Tab-Sets möglich, die dann aber eindeutig benannt sein müssen und sich nicht überlappen dürfen.

Es müssen mindestens drei Tab-Values (derselben Gruppe) im Formular sein:

  • erster Tab: beginnt einen Tab und baut das Tab-Menü über alle Tabs des Tab-Sets auf.
  • innerer Tab: jeder innere Tab schließt den vorhergehenden ab und öffnet den eigenen Container
  • letzter Tab: ohne eigenen Eintrag im Tab-Menü, schließt den vorhergehenden Container und die Gruppe

Wenn in einem Tab ein Feld mit Fehlermeldung steckt, wird der Tab optisch markiert und aktiviert.

Wurde das Formulat mit "Übernehmen" gespeichert, wird der zuletzt aktive Tab bei der Wiederanzeige aktiv gesetzt. Ausnahme: in einem anderen Tab ist ein Feld mit Fehlermeldung.

Ein Formular kann mehrere Tab-Sets enthalten, allerdings nicht geschachtelt. In dem Fall müssel alle zu einem Tab-Set gehörenden Tab-Value denselben Gruppennamen bekommen.

Actions

attach - Anhänge an E-Mails hängen

Die Aktion attach muss vor der Aktion für den E-Mail-Versand notiert werden - logisch, sonst wird erst die Mail versendet und dann der Anhang beigefügt.

Szenario für Bewerberformulare: Durch geschickte Kombination und Reihenfolge lässt sich zunächst eine Bestätigungs-Mail an einen Bewerberin ohne Anhang versenden, anschließend wird die Action eingetragen und zum Schluss eine weitere Mail-Aktion an das Unternehmen - diese ist dann mit Anhang.

conversion_push - Conversion-Tracking

Die Aktion conversion_push sendet ein Conversion-Tracking-Event an Google Analytics (gtag.js), wenn die Seite mit dem Formular aufgerufen wird.

Voraussetzung

Der Google Tag Manager ist initialisiert, bspw. über einen Consent-Manager. Und dieser erstellt einen eigenen EventListener gtagLoaded, z.B. auf diese Art und Weise:

script = document.createElement('script');
script.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX';
script.async = 'async';

window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());

gtag('config', 'G-XXXXXXXXXX');

// Fügen Sie einen EventListener für das load-Ereignis hinzu
script.addEventListener('load', function() {
    // Erstellen Sie ein neues Event
    var event = new Event('gtagLoaded');

    // Lösen Sie das Event aus
    window.dispatchEvent(event);
});

// Fügen Sie das Skript-Tag zum Dokument hinzu
document.head.appendChild(script);
Pipe-Schreibweise
// action|conversion_push|google_ads|event:conversion|send_to:AW-XXXXXXXXX/XXXXXXXXXXXXXXXXXXXX|value:1|currency:EUR

z.B.: action|conversion_push|google_ads|conversion|AW-XXXXXXXXX/XXXXXXXXXXXXXXXXXXXX|999|EUR

Standalone-Implementierung
// Conversion nur zählen, wenn kein REDAXO-Benutzer eingeloggt ist
if(rex_backend_login::createUser() == null) {
    echo conversion_push::google_ads('conversion', "AW-XXXXXXXXX/XXXXXXXXXXXXXXXXXXXX", 999, 'EUR');
}

Einstellungen

Es sind keine weiteren Einstellungen vorhanden.

Tipps und Tricks

Weitere Tipps und Tricks

Siehe auch: https://github.com/alexplusde/yform_field/issues

Lizenz

MIT Lizenz, siehe LICENSE.md

Autoren

Alexander Walther
https://www.alexplus.de https://github.com/alexplusde

Projekt-Lead
Alexander Walther

Credits