smarty与css语法冲突解决方案

2014-02-07 15:21:36

    熟悉CSS的人很快就会发现Smarty和CSS的语法存在冲突,因为二者都需要使用大括号{}。如果简单地将CSS标记嵌入到HTML文档首部,将导致"不可识别标记"错误:
        如果smarty的标签的定界符 {}与css的{}冲突了  

        可以用如下3种办法来解决:  

       1:修改smarty默认定界符,如改成{>,<}  

       // 配置smarty的左右定界符  
       $smarty->left_delimiter = '{>';  
       $smarty->right_delimiter = '<}';  

        2:使用Smarty的literal标记将样式表信息包围起来  
        来告诉smarty,此处照常输出,不要解析该标记内的任何内容:
        literal在英语里,是"字面值,原义"的意思
  1. <html> 
  2. <head> 
  3. <title>{$title}</title> 
  4. {literal}  
  5. <styletypestyletype="text/css"> 
  6. p{  
  7. margin::2px  
  8. }  
  9. </style> 
  10. {/literal}  
  11. </head> 
  12.  
  3:使用link标记从另一个文件中提取样式信息:
  1. <html> 
  2. <head> 
  3. <title>{</title> 
  4. <link rel="stylesheet" type="text/css" href="default.css"/> 
  5. </head>
其中第3种可能是最方便的,因为将CSS放在单独的文件中是一种常见的实践做法。此外,这种解决方案不需要修改Smarty的重要默认配置(定界符)。

为您推荐