Módosítók
A Smartyban vannak előre beépített ún. módosítók, amelyekkel egy változót tudunk inline módosítani.
Ezek használata a pipe (|) szimbólummal történik. Pl: {$var|cat:'!'}
Ez az utasítás a $var változó értékéhez hozzá fog konkatenálni egy felkiáltójelet.
A módosítókat egymás után írhatjuk, ilyen esetben szekvenciálisan hajtódnak végre.
Számos beépített módosító van, de magunk is definiálhatunk.
Beépített módosítók:
- {$valtozo|capitalize:true} - Nagybetűssé változtatja a szavak első betűit.
- A paraméter adja meg hogy számokat tartalmazó szavakkal is foglalkozzon-e.
- Alapértelmezésben false
- {$szoveg|cat:'World'} - A szöveg tartalmához hozzá konkatenálja a 'World' szót
- {$szoveg|count_characters:true} - A karakterek számát adja vissza
- A paraméter adja meg hogy a whitespace karaktereket is beleszámolja-e az összegbe
- Alapértelmezésben false
- {$szoveg|count_paragraphs} - A szövegeben bekezdések számát adja vissza
- {$szoveg|count_sentences} - A mondatok számát adja eredményül
- {$szoveg|count_words} - A szavak számát adja eredményül
- {$datum|date_format:"%A, %B %e, %Y"} - dátumot alakít át a megadott formátumra
- a paramétere lehet változóban definiált érték is, amit php-ban is megadhatunk
- Alapértelmezésben '%b %e, %Y' az értéke
- A formázó karakterek a referenciában megtekinthetőek.
- {$ertek|default:'üres'} - Ha az ertek változó üres (üres ha értéke'') vagy nem definiált, akkor "üres" jelenik meg helyette.
- {$szoveg|escape:tipus} - Átkódolja a szöveg speciális karaktereit a paraméterként kapott sablon szerint
- {$szoveg|escape:html} - alapértelmezett, átkódolja: & " ' < >
- {$szoveg|escape:htmlall} - átkódol minden html entitást.
- {$szoveg|escape:url} - A megadott szöveget url formátumra hozza, azaz a végeredményt már beírhatnánk a böngésző címsorába egy oldal paramétereként.
- {'mail@example.com'|escape:'mail'} - A @ illetve . helyett [AT] illetve [DOT] kerülnek.
- {$szoveg|indent:ertek} - A $szoveg tartalma 'ertek' számú karakterrel beljebb kezdődik, alapértelmezésben ez 4.
- {$szoveg|lower} - A $szoveg tartalma csupa kis betű lesz
- {$szoveg|nl2br} - A szövegben lévő soremeléseket <br> tag-á alakítja
- {$szoveg|regex_replace:"/[\r\t\n]/":" "} -Az első paraméterben megadott reguláris kifejezésre illeszkedő szövegrészt cseréli a második kifejezésben megadottra.
- {$szoveg|replace:'alma':'körte'} -Az első paraméterben megadott szövegrészt a másodikban megadottra cseréli
- {$szoveg|spacify:"^^"} - A paraméterként megadott karaktereket teszi minden karakter után. Alapértelmezett értéke egy space
- {$szam|string_format:"%.2f"} - Ennek a módosítónak segítségével hozhatunk egy számot a kívánt formátumra
- {$szoveg|strip:' '} - Minden whitespace-t a paraméterként megadottra cserél, alapértelmezésben 1 space-re
- {$szoveg|strip_tags:false} - minden < és > jel közti részt kivág a szövegből. Ha a paraméter true, space-el helyettesíti, egyébként nem kerül a helyükre semmi
- {$szoveg|truncate} - Levágja a szöveg végéről a túllógó karaktereket, alapértelmezésben 80 karakter utániakat
- {$szoveg|truncate:30} - 30 karakter utáni részt vágja le, félbevágott szót már nem ír ki
- {$szoveg|truncate:30:---} - 30 karakter utáni részt vágja le, félbevágott szót nem ír ki, a paraméterként megadott karaktereket ír a levágott rész helyére, alapértelmezésben ...-ot
- {$szoveg|truncate:30:---:true} - Ugyanúgy, mint az előző sor, csak most a fél szavakat is kiírja, alapértelmezésben false
- {$szoveg|truncate:30:---:true:true} - A szöveg közepéről vágja ki a szöveget
- {$szoveg|lower} - A $szoveg tartalma csupa nagy betű lesz
- {$szoveg|wordwrap:30} - A $szoveg tartalmát a megadott paraméter hosszú sorokra tördeli, alapértelmezésben 80 karakter
- {$szoveg|wordwrap:30:"<br />\n"} - 30 karakter hosszú sorokra tördel, a sorok végére a második paraméterként megadott szöveget teszi.
- {$szoveg|wordwrap:30:"<br />\n":true} - 30 karakter hosszú sorokra tördel, a sorok végére a második paraméterként megadott szöveget teszi, karakterek szerint tör sort.
Saját módosítók:
Saját magunk is létrehozhatunk módosítókat.
Módosítókat php fájlból hozhatunk létre, mégpedig úgy, hogy egy php függvényt, ami string inputra string output-ot ad, elnevezünk smarty módosítónak
Példa: 2 tizedes jegyig %-ot kiíró szám formátum:
function percent_number_format($string)
{
if ( !empty($string) ) {
$string=str_replace(',','.',$string);
return number_format($string, 2, '.', ' ')."%";
} else {
return '';
}
}
$smarty->register_modifier('percent_number_format','percent_number_format');
A tpl-ben ezekután beírhatjuk a {$szam|percent_number_format} kifejezést.