Die eingebauten Formulare bekommen ihr Widget über Twig-Hooks, die dieses Plugin registriert. Dafür ist nichts weiter zu tun.
Bei jedem anderen Formular platzierst du das Widget einmalig im Template. Dafür gibt es zwei gleichwertige Wege:
Rufe die Twig-Funktion direkt auf. Sie gibt nur dann etwas aus, wenn das Schutzziel im aktuellen Channel tatsächlich geschützt ist. Andernfalls bleibt sie leer, deshalb kann der Aufruf dauerhaft im Template stehen bleiben:
{{ mmd_altcha_widget('<target code>') }}
Zum Beispiel in einem Template, das ein anderes Plugin mitbringt: Rendere stattdessen einen Hook. Ein nicht definierter Hook gibt nichts aus, daher ist das auch dort unproblematisch, wo dieses Plugin nicht installiert ist:
{% hook 'mmd_altcha.widget.support_form' %}
{% hook 'mmd_altcha.widget.newsletter' %}
{% hook 'mmd_altcha.widget' with { target: 'custom_order_form' } %}
Als <target code> bzw. target verwendest du bei den beiden Schwester-Plugins support_form und newsletter, bei einem eigenen Formular den Code, den du im Admin vergeben hast (Präfix custom_). Hake das Schutzziel in den Channel-Einstellungen erst an, wenn das Widget im Template steht (siehe Konfiguration).
Ersetzt dein Theme das Template eines eingebauten Formulars (zum Beispiel den Sylius-Hook
sylius_shop.contact.contact_request.content.form) und gibt das Widget dadurch nicht mehr aus, wird jede Absendung dieses Formulars abgelehnt, denn die eingebauten Schutzziele sind von Anfang an angehakt. Entferne dann entweder den Haken oder baue das Widget wieder in das Template ein.
Am einfachsten ist die Twig-Funktion. Die Codes der eingebauten Formulare sind contact, registration, login und password_reset_request:
{{ mmd_altcha_widget('contact') }}
_prefixes: []Rufst du einen Hook aus einem Template auf, das selbst von einem Hook gerendert wird, übergib _prefixes: []. Sylius stellt dem Namen des inneren Hooks sonst den Namen des äußeren voran (hier sylius_shop.contact.contact_request.content.form.mmd_altcha.widget). Diesen Hook gibt es nicht, deshalb wird stillschweigend nichts ausgegeben und es gibt keinen Fehler:
{% hook 'mmd_altcha.widget' with { target: 'contact', _prefixes: [] } %}
Dasselbe gilt für mmd_altcha.widget.support_form und mmd_altcha.widget.newsletter, wenn sie aus einem von einem Hook gerenderten Template aufgerufen werden.
Öffne das Formular nach jeder Änderung im Shop und prüfe, ob das Widget tatsächlich erscheint. Bei Problemen siehe Fehlerbehebung.