Kontaktformular erweitern II / IMI_Contacts

Posted in Magento, 04.07.2014 18:07

IMI_Contacts ist ein Kontakt-Modul, mit folgenden Features:

Backend-Bereich in der Systemkonfiguration 

in der rechten Randspalte unter General/IMI Contacts.

Hier kann für jede Website (Scope) editiert werden:

  • enable (Yes/no)

  • Default Email-Adresse des Empfängers

  • enable Multiform wenn No, wird die simple Kontaktformularvariante angezeigt

  • enable Subject Select wenn auf Yes können 10 subject/Recipient-Kombinationen konfiguriert werden

  • Email Sender

  • Email Templateaus der Liste der Transaction Mails

Das Backendformular wird konfiguriert in der app/code/local/IMI/ViledaContacts/etc/system.xml.

Einbindung statischer und Template-Blöcke (Einleitungstext, Footer, Rechte)

Im Template app/design/frontend/vileda/default/template/imi/contacts.phtml werden die statischen CMS-Blöcke für den Einleitungs- und Footertext eingebunden:

contacts_before_form

Einbindung über:

<div class="contact-subtitle"><?php echo $this->getChildHtml('cms_contacts_before_form')?></div> 

contacts_below_form

<div class="contact-subtitle"><?php echo $this->getChildHtml('cms_contacts_below_form')?></div> 

cms_contacts_right

<?php echo $this->getChildHtml('cms_contacts_right')?> 

Achtung diese Blöcke müssen noch in einer/der local.xml definiert werden! In diesem Fall gibt es dafür die app/design/frontend/vileda/de/layout/local.xml

Der entsprechende Abschnitt sieht so aus:

<contacts_index_index>
<reference name="contactForm">
<block type="cms/block" name="cms_contacts_before_form">
<action method="setBlockId">
<id>contacts_before_form</id>
</action>
</block>
<block type="cms/block" name="cms_contacts_below_form">
<action method="setBlockId">
<id>contacts_below_form</id>
</action>
</block>
<block type="core/template" name="cms_contacts_right" template="custom/contact_address.phtml"
translate="label"/>
</reference>
</contacts_index_index> 

Hier wird der contacts_right Block als template-Block definiert, es handelt sich also nicht um einen statischen Block! Alles wird aus dem hier definierten Template gelesen!

Das contact_address.phtml gibt folgende Variablen aus (live nicht genutzt):


<div class="contact-address">
<?php echo nl2br(Mage::getStoreConfig('general/store_information/address'))?>
<?php echo Mage::getStoreConfig('general/store_information/phone')?>
</div>

app/design/frontend/vileda/de/template/custom/contact_address.phtml

Frontend-Template-Auswahl über Backend

wenn die Option "Enable Multiform" auf "No" gestellt ist, wird das Standard-Template für Kontaktformulare verwendet. Die überschriebene Variante befindet sich hier:

app/design/frontend/vileda/default/template/imi/form.phtml

Die Auswahl erfolgt in der Index-Action des Index-Controller: 


...
if ( 0 == Mage::getStoreConfig('contacts/email/enable_multiform')) $this->getLayout()->getBlock('contactForm')->setTemplate('imi/form.phtml')->setFormAction( Mage::getUrl('*/*/post') );
        else $this->getLayout()->getBlock('contactForm')->setFormAction( Mage::getUrl('*/*/post') );

...

Versandmail-Template

muß unter System->Transaction Emails angelegt werden. Es steht dann im Backendformular in der Auswahl "Email Templates" zur Verfügung.

Die Auswahlliste wird in der system.xml wie folgt getriggert:


 <email_template translate="label">
                            <label>Email Template</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_email_template</source_model>
                            <sort_order>230</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </email_template>

Das Email-Template selbst kann nicht ins Zip-Archiv aufgenommen werden, weil die Transaction-Emails in der DB gespeichert werden :-/


Betreff: {{var data.subject}}

Anrede:  {{var data.salutation}}
Vorname: {{var data.firstname}}
Name: {{var data.name}}
E-Mail: {{var data.email}}
Telefon: {{var data.phone}}
Strasse/Nr.: {{var data.street}} {{var data.number}}
PO Box: {{var data.pobox}}
PLZ/Stadt: {{var data.postcode}} {{var data.city}}
Land: {{var data.country}}
Bundesland: {{var data.state}}


Kommentar: {{var data.comment}}

Ebenfalls nicht im Päckchen befinden sich die Übersetzungsdateien, da die Standard-Files von Magento (Mage_Contacts.xml) Verwendung finden. Wenn es geändert werden soll, dann die config.xml hierfür verwenden. Vorhanden sind folgende Übersetzungsdateien:

app/locale/tr_TR/Mage_Contacts.csvapp/locale/fr_FR/Mage_Contacts.csvapp/locale/pt_PT/Mage_Contacts.csvapp/locale/es_ES/Mage_Contacts.csvapp/locale/it_IT/Mage_Contacts.csvapp/locale/pt_BR/Mage_Contacts.csvapp/locale/en_US/Mage_Contacts.csvapp/locale/zh_CN/Mage_Contacts.csvapp/locale/en_GB/Mage_Contacts.csvapp/locale/es_MX/Mage_Contacts.csvapp/locale/fi_FI/Mage_Contacts.csvapp/locale/nl_NL/Mage_Contacts.csvapp/locale/de_DE/Mage_Contacts.csv

Achtung Enterprise-Edition!

Evtl. sind aber auch Inline-Translations aktiv! Diese werden in der core_translate-Tabelle gespeichert. Tatsächlich finden sich darin eine Reihe Einträge der Art Mage_Contacts::Subject etc. Die Inline-Translations werden am besten über die Developer-Toolbar ein- und ausgeschaltet. Achtung, NUR IN EINE DEV-UMGEBUNG einschalten, weil auf live sonst auch externe User eine Übersetzung vornehmen könnten!!!

Hier ist das Päckchen (auch unter _development).