XOOPS Brasil

 

Escapando da interpretação do Smarty

Algumas vezes é desejável ou mesmo necessário fazer o Smarty ignorar sessões que em outro caso ele interpretaria. Um exemplo classico é embutindo Javascript ou código CSS no template. O problema aparece porque estas linguagens usam os caracteres { e } que são os delimitadores padrão para o Smarty.

A coisa mais simples é evitar a situação em sí separando o seu código Javascript e CSS nos seus próprios arquivos e então usar os métodos padrões do HTML para acessa-los.

Incluir conteúdo literal é possível usando blocos {literal} .. {/literal}. De modo similar ao uso de entidades HTML, você pode usar {ldelim},{rdelim} ou {$smarty.ldelim} para mostrar os delimitadores atuais.

As vezes é conveniente simplesmente mudar $left_delimiter e $right_delimiter.

Example 3.6. Exemplo de modificar os delimitadores


<?php

$smarty = new Smarty;
$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';
$smarty->assign('foo', 'bar');
$smarty->assign('name', 'Albert');
$smarty->display('example.tpl');

?>

  

Aonde example.tpl é:


Welcome <!--{$name}--> to Smarty
<script language="javascript">
  var foo = <!--{$foo}-->;
  function dosomething() {
    alert("foo is " + foo);
  }
  dosomething();
</script>

  

Veja também escape modifier