Ich habe ein neues benutzerdefiniertes Kontaktformular auf der Magento-Website erstellt. Ich versuche, am Ende ein Captcha hinzuzufügen.
Ich habe zu app / code / core / Mage / Captcha / etc / config.xml hinzugefügt
<customcontacts>
<label>Custom Contact Form</label>
</customcontacts>
Und ich habe zu app / design / frontend / base / default / layout / captcha.xml hinzugefügt
<customcontacts>
<reference name="customcontacts">
<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>customcontacts</formId></action>
<action method="setImgWidth"><width>230</width></action>
<action method="setImgHeight"><width>50</width></action>
</block>
</block>
</reference>
</customcontacts>
Und ich habe meinem Formular diesen Code hinzugefügt:
<script type="text/javascript">
//<![CDATA[
$('form-validate-captcha').captcha.refresh($('catpcha-reload'));
//]]>
Und ich habe diesen Code hinzugefügt, um das Captcha anzuzeigen:
<div><?php echo $this->getChildHtml('captcha'); ?></div>
Dann habe ich Captcha unter Konfiguration> Kundenkonfiguration> CAPTCHA aktiviert und "Benutzerdefiniertes Kontaktformular" und dann "Anzeigemodus" auf "Immer" gewählt.
Aber ich habe das Captcha noch nicht in meinem benutzerdefinierten Formular erhalten.
Ich hoffe ich war klar
Vielen Dank
Antworten:
NameSpace: MyPackage und Modul: MyModule
Modulkonfiguration
Speicherort: app / etc / modules / MyPackage_MyModule.xml
Erstellen Sie eine Konfigurationsdatei für dieses Modul
Speicherort: app / code / local / MyPackage / MyModule / etc / config.xml
Erstellen Sie dafür einen Beobachter
Speicherort: app / code / local / MyPackage / MyModule / Model / Observer.php
Erstellen Sie eine local.xml für Ihr aktives Thema im Layoutordner.
Kopieren Sie nun Kontakte / form.phtml nach mymodule / Kontakte / form.phtml und fügen Sie
<?php echo $this->getChildHtml('form.additional.info'); ?>
Ihre Anforderung hinzu. Beispiel...Cache leeren. Gehen Sie nun zu System -> Konfiguration -> Kundenkonfiguration -> Captcha . Wählen Sie Kontaktseite und Speichern.
quelle
Keine Antwort auf Ihre Frage, aber Sie sollten sich HoneySpam ansehen . Es werden andere Techniken zur Vermeidung von Spam verwendet, die Kunden nicht stören.
quelle
wie ich unten getan habe. Für mich geht das.
layout.xml
form.phtml
controller.php in Submit-Aktion (wo Ihr Formular gesendet wurde)
Genießen Sie es funktioniert super.
quelle
Die Lösung von Sohel Rana hat funktioniert, außer dass im ersten XML ein </ config> -Tag fehlt.
Andere Dinge zu beachten ist, dass Captcha auch in der Systemkonfiguration aktiviert sein muss.
Das Kontaktformular sollte über die URL / Kontakte und nicht über einen CMS-Seiteninhalt mit {{block}} eingerichtet sein. Der CMS-Inhalt {{block}} kann nicht mit dem XML-Layout aktualisiert werden, um das Captcha einzufügen.
quelle
Wenn Sie die Kernfunktion von Captcha im Kontaktformular verwenden möchten, müssen Sie ein Modul in Ihrem lokalen Verzeichnis entwickeln. Hier ist "Compny" mein Namespace und "Captcha" ist der Modulname
Erstellen Sie zunächst die Modulkonfigurationsdatei Compny_Captcha.xml in app / etc / modules /
Erstellen Sie die Datei module config.xml in app / code / local / Compny / Captcha / etc / config.xml
Hier können Sie das Kern-Captcha-Modell überschreiben, da Captcha nach der Kundenanmeldung nicht angezeigt wird, wenn Sie Captcha nach der Kundenanmeldung anzeigen möchten. Daher müssen Sie die Funktion Mage_Captcha_Model_Zend überschreiben. Die Funktion _isUserAuth () erstellt die Datei Zend.php in app / code / local / Compny / Captcha /Model/Zend.php
In dieser Funktion müssen Sie nur den Funktionscode kommentieren.
Erstellen Sie nun das Frontend-Layout, das Sie benötigen, um contacts.xml in app / design / frontend / default / default / layout / contacts.xml zu bearbeiten. Hier müssen Sie den Captcha-Block unter hinzufügen
Danach müssen Sie den Block in der Datei frontend form.phtml in app / design / frontend / default / default / template / kontakt / form.phtml aufrufen. Geben Sie einfach die folgende Zeile ein, bevor Sie das
</ul>
Tag abschließenJetzt müssen Sie die Kontakt-Controller-Erstellungsdatei in app / code / local / Compny / Captcha / controller / IndexController.php überschreiben
Jetzt ist das Captcha-Modul zum Testen bereit.
Um Captcha im Kontaktformular anzuwenden, gehen Sie zu Ihrem Admin-Panel-Einstellungssystem- > Konfiguration-> Kundenkonfiguration-> Captcha. Aktivieren Sie Captcha. Wenn es deaktiviert ist, sehen Sie "Kontaktformular" im Formularbereich für Mehrfachauswahl. Wählen Sie es aus und speichern Sie die Konfiguration. Sehen Sie Ihr Captcha im Frontend.
quelle
Hier sind die kostenlosen Magento-Erweiterungen für Easy Contact Form Captcha Download von hier: - kostenlose Magento-Erweiterungen
quelle