Vylepšujeme kontaktní formulář v Drupalu

Základní kontaktní formulář, který v Drupalu poskytuje modul Contact, je poměrně omezený. V tomto článku najdete tipy na dva moduly, kterými můžete funkcionalitu výchozího kontaktního formuláře v Drupalu zajímavým způsobem rozšířit.

Jakmile zapnete modul Contact, vznikne vám na adrese contact jednoduchý formulář, pomocí kterého mohou uživatelé odeslat zprávu majiteli webu. Kontaktní formulář může obsahovat různé kategorie, přičemž platí, že co kategorie, to jedna z položek v rozbalovací nabídce ve formuláři. Podle toho, jakou položku si uživatel v této nabídce vybere, odešle se obsah formuláře na e-mailovou adresu spárovanou s danou kategorií.

V praxi tak není problém vytvořit kontaktní formulář, ve kterém čtenáři mohou vybírat, zda vám píší kvůli námětům na článek, s připomínkami k fungování webu nebo ohledně nějaké spolupráce. Podobně, jako je to v kontaktním formuláři zde na Maxiorlovi. V té nejjednodušší podobě vypadá kontaktní formulář podobně, jako na webu Crikvenica-Chorvatsko.cz, tedy bez výběru kategorií - je definována jediná a uživatel ji nevidí. Pokud se budete snažit, je možné pomocí kaskádových stylů upravit kontaktní formulář i do podoby, jaká je například na webu Auto-Veteran.com.

Ovšem problém nastává v okamžiku, kdy chcete rozšířit funkcionalitu kontaktního formuláře, například o přidání dalších políček nebo o přesměrování na konkrétní adresu poté, co uživatel odešle vzkaz zadaný do formuláře.

Jak přidat další políčka ke kontaktnímu formuláři v Drupalu

Úplně nejjednodušším příkladem potřeby rozšíření kontaktního formuláře o nové políčko, může být firemní web, na kterém potřebujete, aby na sebe uživatelé při odesílání zprávy zanechali kontakt, například číslo telefonu. Spoléhat na to, že jej uvedou do těla zprávy příliš nelze.

S podobným úkolem i mnoha složitějšími vám pomůže modul Contact form fields. Jakmile jej nakopírujete do Drupalu, přibude vám v přehledu modulů nová sekce Contact fields a v ní čtveřice položek. Kromě základní Contact fields pak zapněte takové, u kterých předpokládáte využití: Contact form list fields pro rozbalovací nabídky, Contact form radio/checkbox field pro zaškrtávací políčka a Contact form Text field pro textová políčka.

Jakmile máte zapnuty potřebné moduly, přejděte do administrační části Prvky webu > Kontaktní formulář a zde se přepněte na novou kartu Manage fields. Postup přidání nového políčka ke kontaktnímu formuláři v Drupalu je zde podobný, jako u práce s modulem CCK. Zadejte tedy název nového políčka, jeho strojové označení a z nabídky vyberte typ políčka.

Definice políček kontaktního formuláře

Definice políček kontaktního formuláře

V upřesňujícím nastavení upravte, zda bude obsah tohoto políčka volitelný, nebo zda bude muset být vyplněno povinně, určete maximální délku zadaného textu a další vlastnosti. Po uložení políčka jej můžete v seznamu přetáhnout tak, abyste upravili pořadí položek v kontaktním formuláři. Změnu pořadí nezapomeňte uložit.

Kromě možnosti přidávat nová políčka vám v nastavení kontaktního formuláře přibude ještě karta Message template. Nechcete-li se spokojit s výchozí podobou e-mailové zprávy, která vám přijde po odeslání kontaktního formuláře, můžete zde definovat šablonu pro její tělo. Využijete přitom nahrazovací vzorky, jejichž seznam je uveden pod políčkem.

Jak přesměrovat kontaktní formulář v Drupalu

Další často uvažovanou funkcionalitou vylepšující kontaktní formulář v Drupalu, je přesměrování uživatele na konkrétní stránku poté, co kontaktní formulář vyplní a odešle. V základní podobě Drupal nic takového nenabízí, stačí však doplnit modul Contact redirect a potřebná funkce je na světě.

Po zapnutí tohoto modulu přejděte do nastavení kontaktního formuláře a rozklepněte úpravu některé z jeho připravených kategorií. Objeví se zde nové políčko Redirect, do kterého stačí zadat adresu, na kterou bude uživatel po odeslání formuláře přesměrován. Adresu zadáváte v relativním tvaru, bez lomítek na začátku a konci.

Nastavení přesměrování kontaktního formuláře

Nastavení přesměrování kontaktního formuláře

Alternativa? Webform

Obě popsaná vylepšení je množné realizovat též pomocí modulu Webform, se kterým v podstatě zapomenete na kontaktní formulář a celý si jej od začátku naklikáte znovu. Důvodem, proč Webform v tomto případě nepoužít, je jeho zbytečná složitost. Přeci jen je to nástroj pro tvorbu rozsáhlých formulářů, nikoli pro vytvoření jednoduché kontaktní stránky.

Máte tipy na další zajímavá vylepšení kontaktního formuláře v Drupalu? Napište do komentářů pod článkem a nebojte se uvést adresu webu, kde jste tato vylepšení implementovali.

Tagy

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Marketing Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

návštěvník

Děkuji za zajímavý a poučný článek. Chtěl bych se zeptat jestli je možné kontaktní formulář zobrazit na vybrané stránce. Například stránka s popisem činnosti firmy a aby se kontatkní formulář zobrazil pod tímto textem.

Profile picture for user Jan Polzer

Dobrý den, třeba modulem Contact form blocks. Udělá to z kontaktního formuláře blok, který lze vložit do regionu někde na webové stránce. Takže teoreticky by jej pak ve Vašem případě stačilo umístit do regionu Obsah.

návštěvník

Dobrý den, 

nedokážu přijít na to, proč když vytvořím pro kategorii kontaktu blok, a ten umístím do regionu Obsahu, s tím, že se má zobrazit pouze na vybrané stránce, (např. node/5), obsah nodu se nahradí kontaktním formulářem, místo toho, aby se blok formuláře zobrazil nad/pod obsahem stránky. Kde dělám chybu?

 

S pozdravem 

Körner

Profile picture for user Jan Polzer

Dobrý den. Když ten formulář dáte do jiného regionu, tak vše funguje správně?

návštěvník

Kdepak. Prostě jakmile se na stránce má zobrazit blok kontaktního formuláře, libovolné kategorie, v libovolném regionu, tak se místo toho obsah přesměruje na node "contact".

Nicméně se domnívám, že to bude chyba v modulu, jelikož mi to dělá na D7.9 s Contact Form Blocks 7.x-1.x-dev.

Asi to budu muset řešit přes webform...

 

S pozdravem

Pavel Körner

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Poslední komentáře
Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru