Datenschutz-Checkbox für Kontaktformular

Wie fügt man in Magento 1.9 eine Checkbox im Kontaktformular und im Registrierungsformular ein, z.B. um die Volljährigkeit zu bestätigen oder das Akzeptieren der Datenschutzbestimmungen einzufordern? Eine praktikable Lösung sind hierbei die Bestellbedingungen (Admin->Verkäufe->Bestellbedingungen). Wir möchten nun also im Kontaktformular die Bestätigung der Datenschutzbestimmungen einbauen und in das Registrierungsformular die Bestätigung der Datenschutzbestimmungen und die Bestätigung der Volljährigkeit, beides in deutscher und englischer Sprache (2 Storeviews). Hierzu erstellen wir nun 4 Bestellbedingungen im Magento-Backend (Alter und Datenschutz, jeweils deutsch und englisch).

 

Um die Bestellbedingungen abzufragen, bedienen wir uns dem Checkout/Agreement-Model (siehe auch https://stackoverflow.com/questions/24516943/get-the-content-of-terms-and-conditions-by-url):

 

if (Mage::getStoreConfigFlag('checkout/options/enable_agreements')) {

                $agreements = Mage::getModel('checkout/agreement')->getCollection()

                               ->addStoreFilter(Mage::app()->getStore()->getId())

                               ->addFieldToFilter('is_active', 1);

}

 

Haben wir hierbei Erfolg, lehnen wir uns im weiteren Verlauf an der Ausgabe der Bestellbedingungen im Checkout an, siehe hierzu

 

\app\design\frontend\base\default\template\checkout\onepage\agreements.phtml

 

Angepasst auf das Kontaktformular erweitern wir nun die ul-Liste um weitere li-Elemente in der Datei (Package und Template natürlich frei anpassbar)

 

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

 

z.B. in dieser Form:

 

if ($agreements) {

                foreach ($agreements as $_a):

                               // ID 5 = Datenschutz-Agreement deutsch, ID 6 = Alter-18-Agreement englisch, ID 7 = Datenschutz-Agreement deutsch, ID 8 = Alter-18-Agreement englisch

                               if ($_a->getId() >= 7 && $_a->getId() <= 8) {

?>

                                               <li>

                                               <div class="checkout-agreements">

                                                               <div class="agreement-content"<?php echo ($_a->getContentHeight() ? ' style="height:' . $_a->getContentHeight() . '"' : '')?>>

                                                                               <?php if ($_a->getIsHtml()):?>

                                                                                              <?php echo $_a->getContent() ?>

                                                                               <?php else:?>

                                                                                              <?php echo nl2br($this->escapeHtml($_a->getContent())) ?>

                                                                               <?php endif; ?>

                                                               </div>

                                                               <p class="agree">

                                                                               <input type="checkbox" id="agreement-<?php echo $_a->getId()?>" name="agreement[<?php echo $_a->getId()?>]" value="1" title="<?php echo $this->escapeHtml($_a->getCheckboxText()) ?>" class="required-entry checkbox" /><label for="agreement-<?php echo $_a->getId()?>"><?php echo $_a->getIsHtml() ? $_a->getCheckboxText() : $this->escapeHtml($_a->getCheckboxText()) ?></label>

                                                               </p>

                                               </div>

                                               </li>

<?php

                               }             

                endforeach;

}

 

Die IDs sind natürlich frei anzupassen.

Damit sind wir im Kontaktformular bereits fertig und übernehmen diese Lösung in leicht veränderter Form für die Registrierung auch für die Datei (Package und Template natürlich frei anpassbar)

 

\app\design\frontend\econcess\default\template\persistent\customer\form\register.phtml

 

Hier erweitern wir die ul wieder an geeigneter Stelle z.B. mit (s.o.)

 

if (Mage::getStoreConfigFlag('checkout/options/enable_agreements')) {

                $agreements = Mage::getModel('checkout/agreement')->getCollection()

                               ->addStoreFilter(Mage::app()->getStore()->getId())

                               ->addFieldToFilter('is_active', 1);

}                                                            

if ($agreements) {

                foreach ($agreements as $_a):

                               // ID 5 = Datenschutz-Agreement deutsch, ID 6 = Alter-18-Agreement englisch, ID 7 = Datenschutz-Agreement deutsch, ID 8 = Alter-18-Agreement englisch

                               if ($_a->getId() >= 5 && $_a->getId() <= 8) {

?>

                                               <li>

                                               <div class="checkout-agreements">

                                                               <div class="agreement-content"<?php echo ($_a->getContentHeight() ? ' style="height:' . $_a->getContentHeight() . '"' : '')?>>

                                                                               <?php if ($_a->getIsHtml()):?>

                                                                                              <?php echo $_a->getContent() ?>

                                                                               <?php else:?>

                                                                                              <?php echo nl2br($this->escapeHtml($_a->getContent())) ?>

                                                                               <?php endif; ?>

                                                               </div>

                                                               <p class="agree">

                                                                               <input type="checkbox" id="agreement-<?php echo $_a->getId()?>" name="agreement[<?php echo $_a->getId()?>]" value="1" title="<?php echo $this->escapeHtml($_a->getCheckboxText()) ?>" class="required-entry checkbox" /><label for="agreement-<?php echo $_a->getId()?>"><?php echo $_a->getIsHtml() ? $_a->getCheckboxText() : $this->escapeHtml($_a->getCheckboxText()) ?></label>

                                                               </p>

                                               </div>

                                               </li>

<?php

                               }             

                endforeach;

}                                             

 

Hiermit sind Kontaktformular mit einer Checkbox und Registrierungsformular mit zwei Checkboxen inkl. Textfeld ausgestattet und wir sind fertig. Getestet in Magento 1.9.1.0.