Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03387.jsonl.gz/1895

Ich möchte ein Override für das Standard-Kontaktformular von Joomla erstellen. Konkret soll eines dieser vier Felder ausgeblendet werden:
Name
E-Mail
Betreff
Nachricht
Das wird in der Datei components\com_contact\forms\contact.xml gemacht. Nun frage ich mich, wo ich diese angepasste Datei speichern soll. Im Template habe ich einen Override von com_contact erstellt. Dabei wurden ein paar Dateien nach /templates/mein_template/html/com_contact kopiert. contact.xml ist nicht dabei. Also muss ich wohl den Pfad selbst herausfinden und die Datei manuell hochladen. Hat mir jemand einen Tipp wohin diese Datei gespeichert werden muss?
Ich glaube nicht, dass ein Override für contact.xml funktioniert. Overrides funktionieren m.E. nur für php Dateien, dieser Code wird anstatt des Core-Codes ausgeführt.
Für Forms ist das dann die edit.php - da drin kannst du dann das Feld löschen, das du nicht bearbeitet haben willst.
HtH
Viele Grüsse
Martin
Für Forms ist das dann die edit.php - da drin kannst du dann das Feld löschen, das du nicht bearbeitet haben willst.
Ja, das ist so. Habe ich auch erfolgreich hinbekommen. Das ungelöste Problem: in der contact.xml ist das Feld, das ich ausgeblendet haben möchte, mit required="true" definiert. Das hat zur Folge, dass das Feld zwar unsichtbar ist, aber das Formular nicht mehr gesendet werden kann.
Das kannst du im Override über Joomlas-Form Klasse steuern. Damit kannst du jedes Feld anpassen wie du es brauchst. Das kannst du am besten im oberen PHP-Bereich des Templates machen. Das HTML des Overrides lässt du dabei am besten so wie es ist.
Du kannst über die Form-Klasse bestehende Felder und deren Attribute verändern, löschen, hinzufügen wie du willst. Allerdings musst du dabei beachten, dass nach dem Absenden bei der Serverseitigen Validierung wieder das originale XML-Form mit allen Feldern dazu verwendet wird. Das heisst du kannst nicht einfach Felder 'verschwinden' lassen. Aber du kannst sie auf 'hidden' stellen. Und sind sie 'required', gib ihnen einfach einen Default-Wert mit. Das geht im Falle vom Feld der E-Mailadresse ungefähr so:
[Edit]
Ich habe die
components/com_contact/tmpl/contact/default_form.php
kopiert nach
templates/TEMPLATENAME/html/com_contact/contact/default_form.php
Das ist für einen bestehenden Kontakt. Aber im 'allgemeinen' Kontaktformular funktioniert das auch. Du musst nur die Feldnamen anpassen.
Tu das was du kannst, mit dem was du hast, da wo du bist