Modificadores de variáveis podem ser aplicados a variáveis, funções personalizadas ou strings. Para aplicar um modificador, especifique o valor seguido por |(pipe) e o nome do modificador. Um modificador aceita parâmetros adicionais que afetam o seu comportamento. Estes parâmetros vem após o nome do modificador e são separados por : (dois pontos). Exemplo 5-1. Exemplo de modificador {{{ {* Faz o título ficar com letras maiúsculas *}

{$titulo|upper}

{* Faz com que $topico use somente 40 caracteres, e coloca ... no fim da frase *} Tópico: {$topico|truncate:40:"..."} {* transforma a data em um formato legível *} {"agora"|date_format:"%Y/%m/%d"} {* aplica um modificador à uma função personalizada *} {mailto|upper address="eu@dominio.dom"} }}} Se você aplicar um modificador à uma matriz ao invés de aplicar ao valor de uma variável, o modificador vai ser aplicado à cada valor da matriz especificada. Se você quer que o modificador use a matriz inteira como um valor, você deve colocar o símbolo @ antes do nome do modificador, como a seguir: {$tituloArtigo|@count} (isto irá mostrar o número de elementos na matriz $tituloArtigo). Modificadores podem ser carregados automaticamente à partir do seu $plugins_dir (veja: Nomes sugeridos) ou podem ser registrados explicitamente (veja: register_modifier). Adicionalmente, todas as funções php podem ser utiliadas como modificadores implicitamente. (O exemplo do @count acima usa a função count do php e não um modificador do Smarty). Usar funções do php como modificadores tem dois pequenos problemas: Primeiro: às vezes a ordem dos parâmetros da função não é a desejada ({"%2.f"|sprintf:$float} atualmente funciona, mas o melhor seria algo mais intuitivo. Por exemplo: {$float|string_format:"%2.f"} que é disponibilizado na distribuição do Smarty). Segundo: com a variável $security ativada em todas as funções do php que são usadas como modificadores precisam ser declaradas como confiáveis (trusted) na matriz $security_settings['MODIFIER_FUNCS']. = capitalize = ---- Isto é usado para converter para maiúsculas a primeira letra de todas as palavras em uma variável. Exemplo 5-2. capitalize index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', 'Police begin campaign to rundown jaywalkers.'); $smarty->display('index.tpl'); index.tpl: {$articleTitle} {$articleTitle|capitalize} SAÍDA: Police begin campaign to rundown jaywalkers. Police Begin Campaign To Rundown Jaywalkers. }}} = lower = ---- Isto é usado para converter para minúsculas uma variável. Exemplo 5-13. lower index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', 'Two Convicts Evade Noose, Jury Hung.'); $smarty->display('index.tpl'); index.tpl: {$articleTitle} {$articleTitle|lower} }}} MOSTRA: Two Convicts Evade Noose, Jury Hung. two convicts evade noose, jury hung. = date_format = ---- {{{ Posição do Parâmetro Tipo Requerido Padrão Descrição 1 string Não %b %e, %Y Este é o formato para a data mostrada. 2 string Não n/a Esta é a data padrão se a entrada estiver vazia. }}} Isto formata a data e hora no formato strftime() indicado. Datas podem ser passadas para o Smarty como timestamps unix, timestamps mysql, ou qualquer string composta de mês dia ano(interpretavel por strtotime). Designers podem então usar date_format para ter um controle completo da formatação da data. Se a data passada para date_format estiver vazia e um segundo parâmetro for passado, este será usado como a data para formatar. Exemplo 5-8. date_format index.php: {{{ $smarty = new Smarty; $smarty->assign('yesterday', strtotime('-1 day')); $smarty->display('index.tpl'); index.tpl: {$smarty.now|date_format} {$smarty.now|date_format:"%A, %B %e, %Y"} {$smarty.now|date_format:"%H:%M:%S"} {$yesterday|date_format} {$yesterday|date_format:"%A, %B %e, %Y"} {$yesterday|date_format:"%H:%M:%S"} MOSTRA: Feb 6, 2001 Tuesday, February 6, 2001 14:33:00 Feb 5, 2001 Monday, February 5, 2001 14:33:00 Exemplo 5-9. date_format conversion specifiers %a - nome do dia da semana abreviado de acordo com o local atual %A - nome do dia da semana inteiro de acordo com o local atual %b - nome do mês abreviado de acordo com o local atual %B - nome do mês inteiro de acordo com o local atual %c - representação preferencial de data e hora para o local atual %C - ano com dois dígitos (o ano dividido por 100 e truncado para um inteiro, intervalo de 00 a 99) %d - dia do mês como um número decimal (intervalo de 00 a 31) %D - o mesmo que %m/%d/%y %e - dia do mês como um número decimal, um único dígito é precedido por um espaço (intervalo de 1 a 31) %g - ano baseado na semana, sem o século [00,99] %G - ano baseado na semana, incluindo o século [0000,9999] %h - o mesmo que %b %H - hora como um número decimal usando um relógio de 24 horas (intervalo de 00 a 23) %I - hora como um número decimal usando um relógio de 12 horas (intervalo de 01 a 12) %j - dia do ano como um número decimal (intervalo de 001 a 366) %k - hora (relógio de 24 horas) digítos únicos são precedidos por um espaço em branco (intervalo de 0 a 23) %l - hora como um número decimal usando um relógio de 12 horas, digítos unicos são precedidos por um espaço em branco (intervalo de 1 a 12) %m - mês como número decimal (intervalo de 01 a 12) %M - minuto como um número decimal %n - caractere de nova linha %p - ou `am' ou `pm' de acordo com o valor de hora dado, ou as strings correspondentes ao local atual %r - hora na notação a.m. e p.m. %R - hora na notação de 24 horas %S - segundo como número decimal %t - caractere tab %T - hora atual, igual a %H:%M:%S %u - dia da semana como um número decimal [1,7], com 1 representando segunda-feira %U - número da semana do ano atual como um número decimal, começando com o primeiro domingo como primeiro dia da primeira semana %V - número da semana do ano atual como um número decimal de acordo com The ISO 8601:1988, intervalo de 01 a 53, aonde a semana 1 é a primeira semana que tenha pelo menos quatro dias no ano atual, sendo domingo o primeiro dia da semana. %w - dia da semana como decimal, domingo sendo 0 %W - número da semana do ano atual como número decimal, começando com a primeira segunda como primeiro dia da primeira semana %x - representação preferencial da data para o local atualsem a hora %X - representação preferencial da hora para o local atual sem a data %y - ano como número decimal sem o século (intervalo de 00 a 99) %Y - ano como número decimal incluindo o século %Z - zona horária ou nome ou abreviação %% - um caractere `%' }}} NOTA PARA PROGRAMADORES: date_format é essencialmente um wrapper para a função strftime() do PHP. Você deverá ter mais ou menos especificadores de conversão disponíveis de acordo com a função strftime() do sistema operacional aonde o PHP foi compilado. De uma olhada na página de manual do seu sistema para uma lista completa dos especificadores válidos. = count_words = ---- Isto é usado para contar o número de palavras em uma variável. Exemplo 5-7. count_words index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', 'Dealers Will Hear Car Talk at Noon.'); $smarty->display('index.tpl'); index.tpl: {$articleTitle} {$articleTitle|count_words} MOSTRA: Dealers Will Hear Car Talk at Noon. 7 }}} = default = ---- Posição do Parâmetro Tipo Requerido Padrão Descrição 1 string Não vazio Este é o valor padrão para mostrar se a variável estiver vazia. Isto é usado para definir um valor padrão para uma variável. Se a variável estiver vazia ou não for definida, o valor padrão dado é mostrado. Default usa um argumento. Exemplo 5-10. default index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', 'Dealers Will Hear Car Talk at Noon.'); $smarty->display('index.tpl'); index.tpl: {$articleTitle|default:"no title"} {$myTitle|default:"no title"} MOSTRA: Dealers Will Hear Car Talk at Noon. no title }}} = escape = ---- Posição do Parâmetro 1 Tipo string Requerido Não Valores Possíveis html,htmlall,url,quotes,hex,hexentity,javascript Padrão html Descrição Este é o formato de escape para usar. Este é usado para escapar html, url, aspas simples em uma variável que já não esteja escapada, escapar hex, hexentity ou javascript. Por padrão, é escapado o html da variável. Exemplo 5-11. escape index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', "'Stiff Opposition Expected to Casketless Funeral Plan'"); $smarty->display('index.tpl'); index.tpl: {$articleTitle} {$articleTitle|escape} {$articleTitle|escape:"html"} {* escapa & " ' < > *} {$articleTitle|escape:"htmlall"} {* escapa todas as entidades html *} {$articleTitle|escape:"url"} {$articleTitle|escape:"quotes"} {$EmailAddress|escape:"hexentity"} MOSTRA: 'Stiff Opposition Expected to Casketless Funeral Plan' 'Stiff Opposition Expected to Casketless Funeral Plan' 'Stiff Opposition Expected to Casketless Funeral Plan' 'Stiff Opposition Expected to Casketless Funeral Plan' %27Stiff+Opposition+Expected+to+Casketless+Funeral+Plan%27 \'Stiff Opposition Expected to Casketless Funeral Plan\' bob@me.net }}} = indent = ---- Posição do Parâmetro Tipo Requerido Padrão Descrição 1 integer Não 4 Isto define com quantos caracteres endentar. 2 string Não (um espaço) Isto define qual caractere usado para endentar. Isto endenta uma string em cada linha, o padrão é 4. Como parâmetro opcional, você pode especificar o número de caracteres para endentar. Como segundo parâmetro opcional, você pode especificar o caractere usado para endentar. (Use "\t" para tabs.) Exemplo 5-12. indent index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', 'NJ judge to rule on nude beach.'); $smarty->display('index.tpl'); index.tpl: {$articleTitle} {$articleTitle|indent} {$articleTitle|indent:10} {$articleTitle|indent:1:"\t"} }}} = string_format = ---- Posição do parâmetro Tipo Requerido Padrão Descrição 1 string Sim n/a Este é o formato para ser usado. (sprintf) Este é um meio para formatar strings, como números decimais e outros. Use a sintaxe para sprintf para a formatação. Exemplo 5-18. string_format index.php: {{{ $smarty = new Smarty; $smarty->assign('number', 23.5787446); $smarty->display('index.tpl'); index.tpl: {$number} {$number|string_format:"%.2f"} {$number|string_format:"%d"} }}} MOSTRA: 23.5787446 23.58 24 = strip_tags = ---- Isto retira as tags de marcação, basicamente tudo entre < e >. Exemplo 5-20. strip_tags index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', "Blind Woman Gets New Kidney from Dad she Hasn't Seen in years."); $smarty->display('index.tpl'); index.tpl: {$articleTitle} {$articleTitle|strip_tags} }}} MOSTRA: Blind Woman Gets New Kidney from Dad she Hasn't Seen in years. Blind Woman Gets New Kidney from Dad she Hasn't Seen in years. = strip = ---- Isto substitui todos os espaços repetidos, novas linhas e tabs por um único espaço ou a string indicada. Nota: Se você quer substituir blocos de texto do template, use a função strip. Exemplo 5-19. strip index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', "Grandmother of\neight makes\t hole in one."); $smarty->display('index.tpl'); index.tpl: {$articleTitle} {$articleTitle|strip} {$articleTitle|strip:" "} }}} MOSTRA: Grandmother of eight makes hole in one. Grandmother of eight makes hole in one. Grandmother of eight makes hole in one. = truncate = ---- Posição Tipo Requerido Padrão Descrição 1 integer Não 80 Este determina para quantos caracteres truncar. 2 string Não ... Este é o texto para adicionar se truncar. 3 boolean Não false Isto determina quando truncar ou não ao final de uma palavra(false), ou no caractere exato (true). Isto trunca a variável para uma quantidade de caracteres, o padrão é 80. Como segundo parâmetro opcional, você pode especificar uma string para mostrar ao final se a variável foi truncada. Os caracteres da string são incluídos no tamanho original para a truncagem. por padrão, truncate irá tentar cortar ao final de uma palavra. Se você quizer cortar na quantidade exata de caracteres, passe o terceiro parâmetro, que é opcional, como true. Exemplo 5-21. truncate index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', 'Two Sisters Reunite after Eighteen Years at Checkout Counter.'); $smarty->display('index.tpl'); index.tpl: {$articleTitle} {$articleTitle|truncate} {$articleTitle|truncate:30} {$articleTitle|truncate:30:""} {$articleTitle|truncate:30:"---"} {$articleTitle|truncate:30:"":true} {$articleTitle|truncate:30:"...":true} }}} MOSTRA: Two Sisters Reunite after Eighteen Years at Checkout Counter. Two Sisters Reunite after Eighteen Years at Checkout Counter. Two Sisters Reunite after... Two Sisters Reunite after Two Sisters Reunite after--- Two Sisters Reunite after Eigh Two Sisters Reunite after E... = wordwrap = ---- Posição Tipo Requerido Padrão Descrição 1 integer Não 80 Isto determina em quantas colunas quebrar. 2 string Não \n Esta é a string usada para quebrar. 3 boolean Não false Isto determina quando quebrar ou não ao final de uma palavra (false), ou no caractere exato (true). Isto quebra uma string para uma largura de coluna, o padrão é 80. Como segundo parâmetro opcional, você pode especificar a string que será usada para quebrar o texto para a próxima linha (o padrão é um retorno de carro \n). Por padrão, wordwrap irá tentar quebrar ao final de uma palavra. Se você quiser quebrar no tamanho exato de caracteres, passe o terceiro parâmetro, que é opcional, como true. Exemplo 5-23. wordwrap index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', "Blind woman gets new kidney from dad she hasn't seen in years."); $smarty->display('index.tpl'); index.tpl: {$articleTitle} {$articleTitle|wordwrap:30} {$articleTitle|wordwrap:20} {$articleTitle|wordwrap:30:"
\n"} {$articleTitle|wordwrap:30:"\n":true} }}} MOSTRA: Blind woman gets new kidney from dad she hasn't seen in years. Blind woman gets new kidney from dad she hasn't seen in years. Blind woman gets new kidney from dad she hasn't seen in years. Blind woman gets new kidney
from dad she hasn't seen in years. Blind woman gets new kidney fr om dad she hasn't seen in year s. = spacify = ---- Posição Tipo Requerido Padrão Descrição 1 string Não um espaço O que é inserido entre cada caractere da variável. Insere um espaço entre cada caractere de uma variável. Você pode opcionalmente passar um caractere (ou uma string) diferente para inserir. Exemplo 5-17. spacify index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', 'Something Went Wrong in Jet Crash, Experts Say.'); $smarty->display('index.tpl'); index.tpl: {$articleTitle} {$articleTitle|spacify} {$articleTitle|spacify:"^^"} }}} MOSTRA: Something Went Wrong in Jet Crash, Experts Say. S o m e t h i n g W e n t W r o n g i n J e t C r a s h , E x p e r t s S a y . S^^o^^m^^e^^t^^h^^i^^n^^g^^ ^^W^^e^^n^^t^^ ^^W^^r^^o^^n^^g^^ ^^i^^n^^ ^^J^^e^^t^^ ^^C^^r^^a^^s^^h^^,^^ ^^E^^x^^p^^e^^r^^t^^s^^ ^^S^^a^^y^^. = replace = ---- Posição Tipo Requerido Padrão Descrição 1 string Sim n/a Esta é a string a ser substituida. 2 string Sim n/a Esta é a string que irá substituir. Um simples localizar e substituir. Exemplo 5-16. replace index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', "Child's Stool Great for Use in Garden."); $smarty->display('index.tpl'); index.tpl: {$articleTitle} {$articleTitle|replace:"Garden":"Vineyard"} {$articleTitle|replace:" ":" "} }}} OUTPUT: Child's Stool Great for Use in Garden. Child's Stool Great for Use in Vineyard. Child's Stool Great for Use in Garden. = nl2br = ---- Todas as quebras de linha serão convertidas para
na variável data. Isto é equivalente a função nl2br() do PHP. Exemplo 5-14. nl2br index.php: {{{ $smarty = new Smarty; $smarty->assign('articleTitle', "Sun or rain expected\ntoday, dark tonight"); $smarty->display('index.tpl'); index.tpl: {$articleTitle|nl2br} }}} MOSTRA: Sun or rain expected
today, dark tonight