Template pro php mail, oddělení designu mailu od zdrojového kódu
Oddělit html kód mailu od zdrojového kódu, který mail odesílá je vhodné z několika důvodů.
Když potřebuji, aby systém odeslal nějaký mail zákazníkovi nebo čtenáři stránek, a má obsahovat konkrétní individuální data, mám na výběr dvě možnosti.
První možnost je, že celý kód vytvářím v php skládáním textu v proměnných. Asi tak:
- $html ="<html><head></head><body>";
- $html.="<h1>".<?=$jmeno;?>."</h1>";
- $html.="</body></html>";
Druhá možnost je vytvořit si šablonu (template mailu). Asi tak:
- <html>
- <head></head>
- <body>
- <h1><?=$template->jmeno;?></h1>
- </body>
- </html>
Je to výhodné z mnoha důvodů: snadněji se to upravuje, testuje, vytváří, neváže se to na kód nebo konkrétní knihovny kódu, snadno se zaměňí celá zpráva, mail může dělat grafik aniž by se vyznal v php a hlavně je to klasický html soubor s php prvky. Tvoří se stejně jako jiné stránky.
Otázkou je jak dostat tuto zprávu do proměnné, abychom ji mohli odeslat mailem. Do mých knihoven na odesílání mailu jsem si vytvořil tuto funkci:
- function getTemplate($s, $template=null) {
- ob_start();
- require ($s);
- $html = ob_get_contents();
- ob_end_clean();
- return $html;
- }
Funkci je předávána parametrem nejdříve cesta k šabloně, která se má použít, a pak objekt s daty, který je šablonou zpracován. Výsledkem je proměnná s textem souboru, stejně jako kdybychom nechali šablonu vypsat na obrazovku.
Další využití funkcí pro kontrolu výstupu najdete v článku ProgressBar v PHP, který se zabývá problematikou informování uživatele o dlouhoběžícím skriptu.
komentáře
RSS Komentáře
Neni zac :), jinak tenhle clanek me uvedl v to, ze jsem si myslel ze bufferovat muzu pouze 1×
ja mam
ob_start();
stranka
ukonceni bufferu a jeho vyplivnuti
a rikal jsem si, ze bych si treba mohl ulozit nejakou tabulku do souboru abych pomohl databazi ale netusil sem ze lze takto vnorovat, je to simple. Diky za pekny clanek



V te funkci se vraci return $z? Nemelo by se vracet nahodou return $html? Asi preklepl