Nếu bạn muốn sử dụng chức năng captcha lõi trong mẫu liên hệ với chúng tôi, bạn cần phát triển một mô-đun trong thư mục địa phương của bạn. Ở đây, Compny, đây là không gian tên của tôi và Cap Cap Capcha là tên mô-đun
Trước hết hãy tạo tệp cấu hình mô-đun Compny_Captcha.xml trong ứng dụng / etc / mô-đun /
<?xml version=”1.0″?>
<config>
<modules>
<Compny_Captcha>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Captcha/>
</depends>
</Compny_Captcha>
</modules>
</config>
tạo tập tin cấu hình mô-đun trong app / code / local / Compny / Captcha / etc / config.xml
<?xml version=”1.0″?>
<config>
<modules>
<Compny_Captcha>
<version>1.8.0.0.0</version>
</Compny_Captcha>
</modules>
<global>
<models>
<captcha>
<rewrite>
<zend>Compny_Captcha_Model_Zend</zend>
</rewrite>
</captcha>
</models>
</global>
<default>
<captcha translate=”label”>
<frontend>
<areas>
<contact_us>
<label>Contact us Form</label>
</contact_us>
</areas>
</frontend>
</captcha>
<customer>
<captcha>
<always_for>
<contact_us>1</contact_us>
</always_for>
</captcha>
</customer>
</default>
<frontend>
<routers>
<contacts>
<args>
<modules>
<Compny_captcha before=”Mage_Contacts”>Compny_Captcha</Compny_captcha>
</modules>
</args>
</contacts>
</routers>
</frontend>
</config>
Tại đây Bạn có thể ghi đè mô hình captcha lõi vì captcha không xuất hiện sau khi đăng nhập của khách hàng nếu bạn muốn hiển thị captcha sau khi đăng nhập của khách hàng, do đó bạn cần ghi đè chức năng Mage_Captcha_Model_Zend _isUserAuth () tạo tệp Zend.php trong ứng dụng / code / local / Compny /Model/Zend.php
<?php
class Compny_Captcha_Model_Zend extends Mage_Captcha_Model_Zend
{
protected function _isUserAuth()
{
//die(‘function called’);
/* return Mage::app()->getStore()->isAdmin()
? Mage::getSingleton(‘admin/session’)->isLoggedIn()
: Mage::getSingleton(‘customer/session’)->isLoggedIn();*/
}
}
Trong chức năng này, bạn chỉ cần nhận xét mã chức năng.
Bây giờ, hãy tạo bố cục lối vào, bạn cần chỉnh sửa contact.xml trong app / design / frontend / default / default / layout / contact.xml Ở đây bạn cần thêm khối captcha bên dưới
<reference name=”content”>
<block type=”core/template” name=”contactForm” template=”contacts/form.phtml”>
<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>contact_us</formId></action>
<action method=”setImgWidth”><width>230</width></action>
<action method=”setImgHeight”><width>50</width></action>
</block>
</block>
</block>
</reference>
Sau đó, bạn cần gọi khối trong tệp form.phtml trong ứng dụng / thiết kế / frontend / default / default / template / contact / form.phtml bạn chỉ cần đặt dòng dưới đây trước khi hoàn thành </ul>
thẻ
<?php echo $this->getChildHtml(‘form.additional.info’); ?>
Bây giờ bạn cần ghi đè liên hệ với chúng tôi, bộ điều khiển tạo tập tin trong app / code / local / Compny / Captcha / controls / IndexContoder.php
<?php
require_once(Mage::getModuleDir(‘controllers’,’Mage_Contacts’).DS.’IndexController.php’);
class Compny_Captcha_IndexController extends Mage_Contacts_IndexController
{
public function postAction()
{
$post = $this->getRequest()->getPost();
if ( $post ) {
$translate = Mage::getSingleton(‘core/translate’);
/* @var $translate Mage_Core_Model_Translate */
$translate->setTranslateInline(false);
try {
$postObject = new Varien_Object();
$postObject->setData($post);
$error = false;
if (!Zend_Validate::is(trim($post['name']) , ‘NotEmpty’)) {
$error = true;
}
if (!Zend_Validate::is(trim($post['comment']) , ‘NotEmpty’)) {
$error = true;
}
if (!Zend_Validate::is(trim($post['email']), ‘EmailAddress’)) {
$error = true;
}
if (Zend_Validate::is(trim($post['hideit']), ‘NotEmpty’)) {
$error = true;
}
$formId =’contact_us’;
$captchaModel = Mage::helper(‘captcha’)->getCaptcha($formId);
if ($captchaModel->isRequired()) {
if (!$captchaModel->isCorrect($this->_getCaptchaString($this->getRequest(), $formId))) {
Mage::getSingleton(‘customer/session’)->addError(Mage::helper(‘captcha’)->__(‘Incorrect CAPTCHA.’));
$this->setFlag(”, Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true);
Mage::getSingleton(‘customer/session’)->setCustomerFormData($this->getRequest()->getPost());
$this->getResponse()->setRedirect(Mage::getUrl(‘*/*/’));
return;
}
}
if ($error) {
throw new Exception();
}
$mailTemplate = Mage::getModel(‘core/email_template’);
/* @var $mailTemplate Mage_Core_Model_Email_Template */
$mailTemplate->setDesignConfig(array(‘area’ => ‘frontend’))
->setReplyTo($post['email'])
->sendTransactional(
Mage::getStoreConfig(self::XML_PATH_EMAIL_TEMPLATE),
Mage::getStoreConfig(self::XML_PATH_EMAIL_SENDER),
Mage::getStoreConfig(self::XML_PATH_EMAIL_RECIPIENT),
null,
array(‘data’ => $postObject)
);
if (!$mailTemplate->getSentSuccess()) {
throw new Exception();
}
$translate->setTranslateInline(true);
Mage::getSingleton(‘customer/session’)->addSuccess(Mage::helper(‘contacts’)->__(‘Your inquiry was submitted and will be responded to as soon as possible. Thank you for contacting us.’));
$this->_redirect(‘*/*/’);
return;
} catch (Exception $e) {
$translate->setTranslateInline(true);
Mage::getSingleton(‘customer/session’)->addError(Mage::helper(‘contacts’)->__(‘Unable to submit your request. Please, try again later’));
$this->_redirect(‘*/*/’);
return;
}
} else {
$this->_redirect(‘*/*/’);
}
}
protected function _getCaptchaString($request, $formId)
{
$captchaParams = $request->getPost(Mage_Captcha_Helper_Data::INPUT_NAME_FIELD_VALUE);
return $captchaParams[$formId];
}
}
Bây giờ mô-đun captcha đã sẵn sàng để thử nghiệm ..
Để áp dụng captcha trong biểu mẫu liên hệ với chúng tôi, hãy truy cập hệ thống cài đặt bảng quản trị của bạn-> cấu hình-> cấu hình khách hàng-> Captcha
Kích hoạt captcha nếu nó vô hiệu hóa, bạn có thể nhìn thấy Liên hệ với chúng tôi Form hình trong vùng đa dạng chọn nó và lưu cấu hình. xem hình ảnh xác thực của bạn trên front-end.