Libovolný formulář snadno a rychle
Představte si, že chcete mít formulář, kde budou prvky rozmístěny naprosto libovolně, sem tam nějaký obrázek. Prostě cokoliv. Zároveň ale chcete použít Typo3 na jeho odeslání, nejlépe ještě ve formě HTML mailu. Pro ukázku 2 formuláře vytvořené postupem, který zde popíšu:
Čím začneme. Samozřejmě si vytvoříme v oblíbeném HTML editoru vytvoříme formulář. Je vhodné použít v něm pole s názvy (name) "name" a "email" (objasním dále proč). V tomto formuláři se absolutně nemusíte omezovat. Berte to tak, že vytváříte statickou stránku.
Nyní zapojíme do akce typo. Na stránce, kde chceme formulář umístit, vytvoříme standardní Typo3 formulář (Vložit obsah stránky, Formulář). Vymažeme z něj ovšem všechna viditelná pole a necháme pouze neviditelná. Vyplníme také mail příjemce. Tzn. kód ve formuláři bude vypadat následovně:
|html_enabled=hidden | 1
|subject=hidden| Subject posilaneho mailu
Tyto pole můžeme později vymazat, ale nyní je ještě potřebujeme. Později se nám ovšem nebude chtít nic mazat, takže zde zůstanou
Teď si stránku zobrazíme v prohlížeči. Logicky na ní nic není vidět. Ovšem ve zdrojovém kódu nám přibyla část s formulářem. A právě tuto část si zkopírujeme do systémové schránky.
Za tento formulář vytvoříme další obsah a to typu HTML! Sem vložíme zkopírovaný formulář z předchozího kroku a smažeme mu koncový tag FORM. Za něj zkopírujeme náš předem vytvořený formulář. Vynecháme ovšem otevírací tag FORM. Zkopírujeme tedy vše za otevíracím tagem FORM až po koncový včetně. Z toho vyplývá, že máme jeden otevírací a jeden uzavírací tag FORM, což je podstatné.
Aby si Typo myslelo, že odeslaný formulář je opravdu jeho, vytvoříme skryté pole, které nám nahradí SUBMIT tlačítko z Typo3 formuláře. Na začátek formuláře (za otevírací tag FORM) přídáme
<input type="hidden" name="formtype_mail" value="Poslat" />
Výsledný HTML obsah stránky tedy bude vypadat přibližně následovně:
<form action="index.php?id=10" name="6f68216ef74731464600e0db45060a32" enctype="multipart/form-data" method="post">
<input type="hidden" name="html_enabled" value="1" />
<input type="hidden" name="subject" value="Subject poslaneho mailu" />
<input type="hidden" name="recipient" value="XXX" />
<input type="hidden" name="locationData" value="10:tt_content:63" />
<input type="hidden" name="formtype_mail" value="Poslat" />
kde XXX je zakódovaný e-mail adresáta formuláře.
Musíme ještě zkontrolovat, že se hodnota atributu NAME elementu FORM shoduje s formulářem, který vytvořilo Typo3. Ten by se měl nacházet hned jako nad naším formulářem.
Moc jsem nezkoumal, jak moc z hlediska validity vadí stejné hodnoty atributu NAME. Osobně se domnívám, že vůbec.
Vyplněný formulář nám dojde ve formě HTML mailu od toho, kdo vyplnil formulář. Jako jméno se použije hodnota z pole "name" a jako email hodnota z pole "email".
Pokud bychom chtěli, aby nám e-maily chodily stále ze stejné adresy, nepoužijeme ve formuláři tyto dvě pole normálně, ale vložíme jej jako skryté:
<input type="hidden" name="email" value="test@test.cz" />
<input type="hidden" name="name" value="Testovací osoba" />