wilson's story

smarty template 에 javascript 사용하기 본문

PHP/smarty

smarty template 에 javascript 사용하기

wilson 2008. 2. 16. 21:06
반응형

Not processing javascript in smarty templates

Use {literal}...{/literal} tags around the javascript within your smarty template:

{literal}
<script language="text/javascript">
...
</script>
{/literal}


참조

http://www.smarty.net/manual/en/language.function.literal.php


{literal}

{literal} tags allow a block of data to be taken literally. This is typically used around Javascript or stylesheet blocks where {curly braces} would interfere with the template delimiter syntax. Anything within {literal}{/literal} tags is not interpreted, but displayed as-is. If you need template tags embedded in a {literal} block, consider using {ldelim}{rdelim} to escape the individual delimiters instead.

Example 7-25. {literal} tags

{literal}
<script type="text/javascript">
<!--
  function isblank(field) {
    if (field.value == '')
      { return false; }
    else
      {
      document.loginform.submit();
      return true;
    }
  }
// -->
</script>
{/literal}

Example 7-26. Javascript function example

<script language="JavaScript" type="text/javascript">
{literal}
function myJsFunction(name, ip){
   alert("The server name\n" + name + "\n" + ip);
}
{/literal}
</script>
<a href="javascript:myJsFunction('{$smarty.server.SERVER_NAME}','{$smarty.server.SERVER_ADDR}')">Click here for the Server Info</a>

Example 7-27. Some css style in a template

{* included this style .. as an experiment *}
<style type="text/css">
{literal}
/* this is an intersting idea for this section */
.madIdea{
    border: 3px outset #ffffff;
    margin: 2 3 4 5px;
    background-color: #001122;
}
{/literal}
</style>
<div class="madIdea">With smarty you can embed CSS in the template</div>

See also {ldelim} {rdelim} and the escaping Smarty parsing page.



{ldelim},{rdelim}

{ldelim} and {rdelim} are used for escaping template delimiters, by default { and }. You can also use {literal}{/literal} to escape blocks of text eg Javascript or CSS. See also the complimentary {$smarty.ldelim}.

Example 7-23. {ldelim}, {rdelim}

{* this will print literal delimiters out of the template *}

{ldelim}funcname{rdelim} is how functions look in Smarty!

The above example will output:

{funcname} is how functions look in Smarty!

Another example with some Javascript

<script language="JavaScript">
function foo() {ldelim}
    ... code ...
{rdelim}
</script>

will output

<script language="JavaScript">
function foo() {
    .... code ...
}
</script>

Example 7-24. Another Javascript example

<script language="JavaScript" type="text/javascript">
    function myJsFunction(){ldelim}
        alert("The server name\n{$smarty.server.SERVER_NAME}\n{$smarty.server.SERVER_ADDR}");
    {rdelim}
</script>
<a href="javascript:myJsFunction()">Click here for Server Info</a>

See also {literal} and escaping Smarty parsing.













반응형