【Smarty】{literal}标签
【转自:http://www.zhangenmin.com/?p=115】
一般情况下我们在定义smarty边界符的时候,都会选择{}。这样的边界符号在HTML代码中出现的频率非常小,所以也基本不会碰到冲突的情况。
一般情况下我们在定义smarty边界符的时候,都会选择{}。这样的边界符号在HTML代码中出现的频率非常小,所以也基本不会碰到冲突的情况。
但是有的时候,我们的一些js文件没有采用外部调用,而是直接写在了HTML代码里。这个时候就很容易出现js中的{}和smarty中的{}冲突并且报错的情况。
我们有三种解决三种方式解决这样的问题。
#########################################
第一:
我们可以修改smarty配置文件中的边界符。
但是这样的修改会影响到我们之前已经嵌套好的smarty标签。所以不推荐!
#########################################
第二:
将js文件改为外部调用。
这个方法多少也有一些不方便,同时也不排除一些特殊情况,必须写在HTML代码内。
所以也不是特别推荐
#########################################
第三:
使用一组smarty标签。
{literal}{/literal}
在这组标签中出现的代码,将被当做文本信息处理。
此时smarty模板机制会忽略掉其中的所有信息,不进行解析。
推荐!!!
#########################################
【转自:http://changfengmingzhi.blog.163.com/blog/static/16710528820113131732719/】
三种方案避免CSS语法与Smarty冲突
一、使用link标记从另一个文件中提取样式信息:
<html>
<head>
<title>{$title}</title>
<linkrellinkrel="stylesheet"type="text/css"href="default.css"/>
</head>
...
二、使用Smarty的literal标记将样式表信息包围起来
这些标记告诉Smarty不要解析该标记内的任何内容:
<html>
<head>
<title>{$title}</title>
{literal}
<styletypestyletype="text/css">
p{
margin::2px
}
</style>
{/literal}
</head>
...
三、修改Smarty的默认定界符
可以通过设置center_delimiter和center_delimiter属性来做到这一点:
<?php
require("Smarty.class.php");
$smarty=newSmarty;
$smarty->left_delimiter='';
$smarty->right_delimiter='';
...
?>
虽然3种解决方案都能解决问题,但其中第一种可能是最方便的,因为将CSS放在单独的文件中是一种常见的实践做法。此外,这种解决方案不需要修改Smarty的重要默认配置(定界符)。

浙公网安备 33010602011771号