Felder bei Kommentar-Formular entfernen

In dieser Anleitung zeige ich dir, wie du einzelne Felder aus dem Kommentar-Formular entfernst. Als Beispiel blenden wir das Website-Feld (website) und die Benachrichtigungs-Checkbox (notify) aus.

Welches Template du anpasst, hängt von deiner Contao-Version ab. Ab Contao 5 läuft das über Twig, in Contao 4 und in 5er-Installationen mit klassischen Templates über die PHP-Variante. Spring direkt zum passenden Akkordeon.

Anpassungen ab Contao 5 (Twig-Template)

Ab Contao 5 setzt das Frontend auf Twig-Templates.

1. Template kopieren: Leg eine Kopie des Templates mod_comment_form.html.twig in deinem Templates-Ordner an.

2. Feldnamen herausfinden: Bevor du die Felder filterst, brauchst du ihre internen Namen. In Twig nutzt du dafür die dump()-Funktion:

{{ dump(fields) }}

Damit dump() die Daten ausgibt, muss der Debug-Modus von Contao aktiviert sein. Sonst bekommst du keine Ausgabe, weil die Daten sicherheitskritische Informationen enthalten können. Details und Varianten findest du in der offiziellen Contao-Dokumentation zu Twig-Template-Daten.

Ruf nach dem Einbau eine Seite mit Kommentar-Formular auf. Du siehst die Übersicht aller Fields-Variablen, darunter die Feldnamen website und notify. Entferne den dump()-Aufruf anschließend wieder.

3. Felder ausblenden: Passe die Schleife field in fields so an, dass bestimmte Feldnamen übersprungen werden. Ergänze dazu:

{% if field.name not in ['website', 'notify'] %}
…
{% endif %}

Komplett sieht das dann so aus:

{% for field in fields %}
    {% if field.name not in ['website', 'notify'] %}
        {{ field.parse()|raw }}
    {% endif %}
{% endfor %}

Erweitere die Liste in den eckigen Klammern um jedes weitere Feld, das du ausblenden willst. Nach dem Speichern den Anwendungs-Cache leeren.

Anpassungen für Contao 4 und 5 (HTML-Template)

In Contao 4 und in Contao-5-Installationen mit klassischen Templates arbeitest du mit dem PHP-Template mod_comment_form.html5.

1. Template kopieren: Leg eine Kopie von mod_comment_form.html5 in deinem Templates-Ordner an.

2. Feldnamen herausfinden: Trag am Anfang des Templates kurz folgende Zeile ein, um alle verfügbaren Template-Variablen anzuzeigen:

<?php $this->dumpTemplateVars(); ?>

Die Anweisung nutzt die Symfony-VarDumper-Komponente. Im Debug-Modus landet die Ausgabe in der Symfony Debug Toolbar. Details dazu findest du in der offiziellen Contao-Dokumentation zu PHP-Template-Daten.

Ruf eine Seite mit Kommentar-Formular auf. Du siehst die Übersicht aller Variablen. Such nach dem Array-Feld fields und klapp es auf. Darunter findest du die Feldnamen website und notify. Lösch die Zeile wieder, sobald du die Felder identifiziert hast.

3. Felder ausblenden: Ersetze die Schleife für die Ausgabe der Felder.

Suche nach:

<?php foreach ($this->fields as $field): ?>
…
<?php endforeach; ?>

Hier muss nun eine if-Abfrage ergänzt werden, welche die nicht mehr gewünschten Felder aussortiert:

<?php foreach ($this->fields as $field): ?>
    <?php if (!in_array($field->name, array('website', 'notify'))): ?>
        <?= $field->parse() ?>
    <?php endif; ?>
<?php endforeach; ?>

Wenn du weitere Felder ausblenden willst, ergänz die Liste in_array(...) um den entsprechenden Feldnamen. Nach dem Speichern den System-Cache leeren.

Ergebnis im Frontend

Hier siehst du die Ausgabe des angepassten Kommentar-Templates im Frontend ohne Website und Checkbox für Benachrichtigung.

angepasstes Kommentarmodul

Möchtest du über neue Artikel informiert werden?

Dann trage hier deine E-Mailadresse ein und klicke auf „Abonnieren". Du erhältst regelmäßig aktuelle Infos über Contao und die Contao-Academy.

Du kannst deine E-Mail-Adresse jederzeit mit nur einem Mausklick aus unserem System löschen. Der Newsletter Versand sowie die individuelle Messung, Speicherung und Auswertung von Öffnungsraten und der Klickraten in Empfängerprofilen erfolgen durch KlickTipp. Ausführliche Hinweise erhältst du in unserer Datenschutzerklärung.

Über den Autor

Christian Feneberg ist der Initiator und Dozent der Contao Academy. Er bringt über 15 Jahre Praxiswissen in der professionellen Umsetzung von Contao-Websites mit. Zudem ist er Teil des Teams von trakked.io. Er liebt es, sich neues Wissen anzueignen und es weiterzugeben. Abseits des Bildschirms verbringt er am liebsten Zeit mit seiner Familie und in der Natur.

Folge Christian jetzt bei LinkedIn.

Christian Feneberg

3 Kommentare

EDV Dozent

Hallo,
danke für die Anleitung.
Wie muss das Ganze bei Contao 5.7 und Twig aussehen?

Antwort von Maren Lange

Du musst bei diesem Template das komplette Template überschreiben, da es noch keine Blöcke enthält.

Der entscheidende Teil

                    {% for field in fields %}
                        {{ field.parse()|raw }}
                    {% endfor %}

muss ersetzt werden durch

                    {% for field in fields %}
                        {% if field.name not in ['website', 'notify'] %}
                            {{ field.parse()|raw }}
                        {% endif %}
                    {% endfor %}

hans

👍🏻

B:SiGN

Vielen Dank Christian, das ist ein super Artikel der vielen denke ich weiterhelfen wird.

Einen Kommentar schreiben

Bitte addieren Sie 6 und 8.