PrestaShop – antispam pro kontaktní formulář

25. 3. 2020

Pokud vás trápí spam z kontaktního formuláře a nechcete používat Google reCAPTCHA tak zde je návod na úpravu, díky které do kontaktního formuláře vložíte ověření pomocí jednoduchého součtu čísel. Čísla se automaticky mění při každém načtení formuláře a výsledek vypadá takto (součet je zde pro názornost označen červeným obdélníkem):

Kontaktní formulář s přákladem

UPOZORNĚNÍ: je třeba rozumět všem prováděným krokům. Chybná úprava může způsobit nefunkčnost stránek.

UPOZORNĚNÍ: u všech upravovaných souborů si nejprve vytvořte zálohu

Úprava kontroleru

Nejprve je třeba rozšírit kontroler formuláře a přidat do něj kód pro ověření součtu. Není vhodné přepisovat celý kontroler a proto přepíšeme pouze nezbytné funkce pomocí override.

Vytvoření kontroleru

Vytvoříme soubor ContactController.php v adresáři /override/controllers/front s následujícím kódem:

Pokud už soubor ContactController.php existuje tak je třeba jen doplnit relevantní část kódu.

Soubor s výše uvedeným kódem si můžete také stáhnout. Odkaz ke stažení je v pravém sloupci této stránky.

Po uložení souboru je třeba vymazat soubor class_index.php v adresáři /cache aby se úprava kontroleru projevila. Tento soubor se automaticky obnoví po načtení stránek.

Překlad chybových hlášek

Po této úpravě jsou texty v angličtině, takže je třeba upravit ještě překlady popisu polí v sekci Lokalizace > Překlady > UPRAVIT PŘEKLADY, kde je třeba zvolit jako typ překladu „Překlady chybových hlášek“ a jazyk :

 

Nová funkce formuláře jsou připravená a nyní je třeba upravit šablonu a doplnit do formuláře příslušná pole.

Úprava šablony:

Vložení formuláře

Pro účely návodu budeme předpokládat, že je aktivní výchozí šablona default-bootstrap.

V adresáři themes/default-bootstrap upravíme soubor contact-form.tpl. Najdeme sekci pro nahrávání souboru (řádek 133):

a za ni vložíme kód:

Výsledek by měl vypadat takto:

V souboru contact-form.tpl přibyly žlutě zvýrazněné řádky.

Překlad

Po této úpravě jsou texty v angličtině, takže je třeba upravit ještě překlady popisu polí v sekci Lokalizace > Překlady > UPRAVIT PŘEKLADY, kde je třeba zvolit jako typ překladu „Překlady Obchodu„, šablonu default-bootstrap a jazyk. Příslušné texty jsou v sekci CONTACT-FORM:

Úprava vzhledu

Tato část popisuje jak zmenšit pole pro vložení výsledku a zarovnání na jeden řádek. Velikost pole se automaticky přizpůsobuje šířce stránky. Pokud vzhled vyhovuje tak je možné tuto část vynechat.

V adresáři /themes/default-bootstrap/css vložíme na konec souboru contact-form.css tento kód:

Vymazání mezipaměti a kontrola

Po provedených úpravách vymažeme vyrovnávací paměť pomocí tlačítka Vyčistit mezipaměť v sekci Nástroje > Výkon a zkontrolujeme funkčnost formuláře.

3 komentáře: “PrestaShop – antispam pro kontaktní formulář”

  1. ako to opravit napsal:

    skusal som to na localhoste a pise mi chybu pri odoslani spravy. potom mi tam ukazuje nad suctom cisel cisla 2 3 4 5 6

    • Jan Kopecký napsal:

      Dobrý den,

      návod je otestován a funkční pro PrestaShop 1.6.1.x a výchozí šablonu. Pokud Vaše instalace splňuje tyto požadavky tak by to mělo fungovat. Doporučuji projít celý návod znovu a nezapomenout na smazání class_index.php a vymazání paměti. Bez toho se nenačte nový soubor v override.

  2. ako to opravit napsal:

    dakujem vyskusam len nerozumiem co tam robi to cislovanie 2 3 4 5 6

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

© Copyright 2006–2024 Zserver s.r.o. RSS Staň se fanouškem Ceny jsou uvedeny bez 21% DPH