Tags literal permitem que um bloco de dados seja tratado literalmente, ou seja, não é interpretado pelo Smarty. Isto é tipicamente usado com blocos de código javascript ou folhas de estilo (stylesheet), que às vezes contém chaves que podem entrar em conflito com o delimitador de sintaxe. Qualquer coisa entre {literal}{/literal} não é interpretado, mas é mostrado. Se você precisa que tags de templates sejam embutidas em um bloco literal, use {ldelim}{rdelim}.
Example 7.13. Tags literal
{literal} <script language=javascript> <!-- function isblank(field) { if (field.value == '') { return false; } else { document.loginform.submit(); return true; } } // --> </script> {/literal}