【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的重要默认配置(定界符)。

posted @ 2012-03-06 08:46  包子土  阅读(2132)  评论(0)    收藏  举报