解決Smarty模板中CSS導致的SmartyCompilerException問題

來源:互聯網
上載者:User

今天在項目中應用Smarty模板引擎時遇到的問題,PHP解析出錯,主要定位在CSS部分,錯誤形如“Uncaught
exception 'SmartyCompilerException' with message 'Syntax Error in
template”。仔細分析了下,發現是嵌入HTML的CSS
{}花括弧與Smarty的界定符號{}花括弧衝突,如果簡單地將CSS標記嵌入到HTML文檔首部,將導致“不可識別標記”錯誤,經過搜尋得到三種辦法以解決這個問題:

1. 外鏈CSS檔案。利用link外鏈層疊樣式表檔案。例如:

 <link href="style.css" type="text/css" rel="stylesheet" /> 

2.
使用literal標記。
利用Smarty專屬的literal標記區分不需要解析的地區,用標記{literal}和{/literal}包含起來的地區Smarty將跳過分析直接輸出,這樣就不會導致衝突了。

{literal}<style type="text/css">body { color:#FFF;}</style>{/literal} 

3.
修改Smarty的預設定界符。
通過設定left_delimiter和right_delimiter屬性來實現這一目的。

require("Smarty.class.php");$template = new Smarty;$template->left_delimiter = '<{';$template->right_delimiter = '}>'; 

第3種方法的缺點就是要改原有模板的解析標籤,比較麻煩,推薦第1種和第2種靈活搭配使用。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.