Weitere Magento Kontaktformular verwenden – Weitere Kontaktformulare mit individuellen Feldern verwenden

Magento hat von Haus aus ein Standard Kontaktformular. Dies kann man im Aussehen recht einfach im Template verändern. Dieser Artikel soll beschreiben, wie man mehre Kontakftormulare verwenden kann ohne eine Extension zu verwenden.  Dazu wird beschrieben, wie man neue Felder hinzufügt. Es handelt sich dabei teilweise um einen Workaround.

 

Wozu braucht man ein weiteres Kontaktformular in Magento?

Normalerweise braucht man es garnicht. Aber es macht in vielen Fällen Sinn den Kunden ein weiteres an die Hand zu geben. Dies könnte z.B. ein Formular für Geschäftskunden, Lieferanten, Großabnehmer oder ähnliches sein. Es können aber auch ganz andere Dinge realisiert werden wie z.B. Telefonischer Rückruf, Anmeldung von Retourabwicklungen und und und.

 

Das normale Kontaktformular anpassen

Das Template für das Kontaktformular befindet sich hier:

\app\design\frontend\default\DEIN_TEMPLATE\template\contacts\form.phtml

Wenn es noch nicht angepasst wurde liegt es im „base“ Ordner

\app\design\frontend\default\base\template\contacts\form.phtml

 

Der Aufbau des Kontaktformulars in „form.phtml“ ist recht einfach zu verstehen. Es gibt normale Inputfields. Über die Klassen wird definiert ob es ein Pflichtfeld ist oder nicht. Die Bezeichnung der Felder sind normale Ausgaben.

Wenn die Bezeichnung geändert wird kann man diese direkt in form.phtml machen oder den sauberen Weg wählen diese in die Translation Datei einzutragen (app/design/frontend/defaul/default/translate/)

 

Ein neues Formular Template erstellen.

Damit man ein weiteres Formular verwenden kann muss man nur die Template Datei „form.phtml“ kopieren. Dabei darauf achten, dass man es in den eigenen Template Ordner kopiert.

z.B.

\app\design\frontend\default\DEIN_TEMPLATE\template\contacts\form.phtml

Dort bennent man das Formular noch um in z.B. „business_contact.phtml“

 

Wie bindet man das neue Formular ein (z.B. CMS Page)?

Man kann dies direkt in einer Template Datei einbauen oder auch auf einer CMS Seite. Hier die Variante einer separaten CMS Seite. Dort fügt man folgenden Code ein:

{{block type=“core/template“ name=“contactForm“ form_action=“/contacts/index/post“ template=“contacts/business_contact.phtml“}}

Der obige Code geht von dem Beispiel „business_contact.phtml“ als neues Kontaktformular aus.

 

Wie kann man weitere Felder (Input fields) hinzufügen zum Kontaktformular.

Nun kommt der spannende Teil wie man das neue Formular anpassen kann und weitere Felder hinzufügen kann.

Dazu kopiert man ein Inputfield und verändert es entsprechend

     <div>
<label for=“street“>Stra&szlig;e und Hausnummer<span>*</span></label><br />
<input name=“street“ id=“street“ title=“<?php echo Mage::helper(‚contacts‘)->__(‚Street‘) ?>“ value=““ class=“required-entry input-text“ type=“text“ />
</div>

 

Folgende Angaben sind wichtig:

class=“required-entry input-text“

Hiermit wird definiert, ob es sich um ein Pflichtfeld handelt

 

name=“street“ id=“street“

Diese Werte müssen entsprechend für das neue Feld einheitlich angepasst werden. Auch hier gilt auf die Groß- und Kleinschreibung zu achten.

 

value=““

Der Standardwert für das Formularfeld. Dort bietet sich an diesen leer zu lassen, sodass der Benutzer nicht den Standardwert abschickt.

 

Wie bekommt man die neue Felder in der Mail angezeigt?

Als erstes erstellt man ein E-Mail Template für das Standardformular (falls nicht schon gesehen).

 

1. Kontaktformular anlegen

„Admin -> System -> Transaktions Emails“ Dort wie unten gezeigt das Formular laden

 

2. Neue Variablen hinzufügen

Nun brauchen nur noch die zuvor definierten Felder hinzugefügt werden. z.B. wie folgt

Name: {{var data.name}}
{{var data.street}}
{{var.data.zip}} {{var.data.town}}

Magento macht den Rest automatisch.

 

Wo sind die Grenzen dieses Umbaues ?

Leider muss(!) immer das Email und das Nachrichtenfeld vorhanden sein und einen Wert übergeben. Daher kann man diese nicht einfach löschen aus dem Formular. Wenn man dies macht, funktioniert das Formular nicht!

Aber auch dies lässt sich lösen. Wenn man E-Mail oder Nachricht nicht benötigt kann man diese einfach im neuen Formular Template verstecken.

Dazu kann man per CSS einfach den Kasten verstecken (display:none). Da jedoch ein Wert erwartet wird, setzt man einen festen Wert (value=“info@muster.de“)

<div style=“display:none;“>          <label for=“email“><?php echo Mage::helper(‚contacts‘)->__(‚Email‘) ?></label><br />                                     <input name=“email“ id=“email“ title=“<?php echo Mage::helper(‚contacts‘)->__(‚Email‘) ?>“ value=“info@Muster.de“ type=“text“ />     </div>

Schon kann man beliebige Felder erstellen

Wie unterscheidet man als Admin die verschiedenen Mails?

Das Problem ist, dass es so nur ein Email-Template für alle Kontaktformular gibt. Dies kann man aber auch lösen in dem mann für jedes Formular Template einen unsichtbaren Wert übergibt, der angibt worum es sich handelt. z.B.“Business Kontakt“ und übergibt es als Variable „contactFormType“. Wenn man dann im Email-Template an erster Stelle diese Variable ausgibt weiß man direkt um was es sich handelt.

Problematischer wird es mit Zusätzlichen Informationen in der Email-Vorlage. Da alle Formulare auf das selbe Template zugreifen, müssen dort alle(!) Variablen vorhanden sein, die ausgegeben werden sollen. Hier muss man etwas testen und überlegen wie man die Informationen ausgegeben bekommt, sodass jeder damit arbeiten kann.

 

Das übergeben der Variablen basiert auf diesem tollen Tutorial

http://www.richardcastera.com/blog/magento-add-additional-fields-to-the-contact-form

 

Mehr Informationen zu Magento unter:

http://www.konvis.de/know-how/magento-beratung-konzeption-programmierung-und-umsetzung.html

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert