NameSpace : MyPackage and Module: MyModule
Module configuration
location : app/etc/modules/MyPackage_MyModule.xml
1 2 3 4 5 6 7 8 |
<config> <modules> <MyPackage_MyModule> <active>true</active> <codePool>local</codePool> </MyPackage_MyModule> </modules> </config> |
Create config file for this module
location : app/code/local/MyPackage/MyModule/etc/config.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<config> <modules> <MyPackage_MyModule> <version>0.0.0.1</version> </MyPackage_MyModule> </modules> <global> <models> <mymodule> <class>MyPackage_MyModule_Model</class> </mymodule> </models> <events> <controller_action_predispatch_contacts_index_post> <observers> <mymodule> <class>mymodule/observer</class> <method>checkContacts</method> </mymodule> </observers> </controller_action_predispatch_contacts_index_post> </events> </global> <default> <captcha> <frontend> <areas> <contacts> <label>Contacts Page</label> </contacts> </areas> </frontend> </captcha> <customer> <captcha> <always_for> <contacts>1</contacts> </always_for> </captcha> </customer> </default> </config> |
Create a observer for that
location: app/code/local/MyPackage/MyModule/Model/Observer.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
class MyPackage_MyModule_Model_Observer { public function checkContacts($observer){ $formId = 'contacts'; $captchaModel = Mage::helper('captcha')->getCaptcha($formId); if ($captchaModel->isRequired()) { $controller = $observer->getControllerAction(); $word = $this->_getCaptchaString($controller->getRequest(), $formId); if (!$captchaModel->isCorrect($word)) { Mage::getSingleton('customer/session')->addError(Mage::helper('captcha')->__('Incorrect CAPTCHA.')); $controller->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true); $url = Mage::getUrl('contacts'); $controller->getResponse()->setRedirect($url); } } return $this; } /** * Get Captcha String * * @param Varien_Object $request * @param string $formId * @return string */ protected function _getCaptchaString($request, $formId) { $captchaParams = $request->getPost(Mage_Captcha_Helper_Data::INPUT_NAME_FIELD_VALUE); return $captchaParams[$formId]; } } |
Create a local.xml to your active theme inside layout folder.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<layout version="0.1.0"> <contacts_index_index> <reference name="contactForm"> <action method="setTemplate"><template>mymodule/contacts/form.phtml</template></action> <block type="core/text_list" name="form.additional.info"> <block type="captcha/captcha" name="captcha"> <reference name="head"> <action method="addJs"><file>mage/captcha.js</file></action> </reference> <action method="setFormId"><formId>contacts</formId></action> <action method="setImgWidth"><width>230</width></action> <action method="setImgHeight"><width>50</width></action> </block> </block> </reference> </contacts_index_index> |
Now copy contacts/form.phtml to mymodule/contacts/form.phtml, add
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<?php echo $this->getChildHtml('form.additional.info'); ?> to <form action="<?php echo $this->getFormAction(); ?>" id="contactForm" method="post" class="b_default_layout"> <ul class="form-list"> <li class="fields row"> <div class=" col-lg-6 col-md-6 col-sm-6 m_bottom_15"> <label for="name" class="second_font required d_inline_b m_bottom_5 clickable"><?php echo Mage::helper('contacts')->__('First Name') ?></label> <div class="input-box"> <input name="name" id="name" title="<?php echo Mage::helper('contacts')->__('Name') ?>" value="<?php echo $this->escapeHtml($this->helper('contacts')->getUserName()) ?>" class="input-text required-entry tr_all w_full fw_light" type="text" /> </div> </div> <div class=" col-lg-6 col-md-6 col-sm-6 m_bottom_15"> <label for="email" class="second_font required d_inline_b m_bottom_5 clickable"><?php echo Mage::helper('contacts')->__('Email Address') ?></label> <div class="input-box"> <input name="email" id="email" title="<?php echo Mage::helper('contacts')->__('Email') ?>" value="<?php echo $this->escapeHtml($this->helper('contacts')->getUserEmail()) ?>" class="input-text required-entry validate-email tr_all w_full fw_light" type="text" /> </div> </div> </li> <li> <label for="telephone" class="second_font d_inline_b m_bottom_5 clickable"><?php echo Mage::helper('contacts')->__('Telephone') ?></label> <div class="input-box"> <input name="telephone" id="telephone" title="<?php echo Mage::helper('contacts')->__('Telephone') ?>" value="" class="input-text tr_all w_full fw_light" type="text" /> </div> </li> <li class="wide"> <label for="comment" class=" second_font d_inline_b m_bottom_5 clickable required"><?php echo Mage::helper('contacts')->__('Message') ?></label> <div class="input-box"> <textarea name="comment" id="comment" title="<?php echo Mage::helper('contacts')->__('Comment') ?>" class="required-entry input-text tr_all w_full fw_light" cols="5" rows="3"></textarea> </div> </li> </ul> <?php echo $this->getChildHtml('form.additional.info'); ?> <div class="buttons-set"> <input type="text" name="hideit" id="hideit" value="" style="display:none !important;" /> <button type="submit" title="<?php echo Mage::helper('contacts')->__('Submit') ?>" class="button button_type_2 black state_2 tr_all second_font fs_medium tt_uppercase d_inline_b"><span><span class="m_left_10 m_right_10 d_inline_b"><?php echo Mage::helper('contacts')->__('Submit') ?></span></span></button> </div> </form> |
Clear cache. Now Go to System -> Configuration -> Customer Configuration -> Captcha. Select Contact Page and Save.
Then you will see the Result :
Hope it helps !