SMARTY模板中CSS及JavaScript問題

SMARTY算是歷史久遠且強大的template engine(模板引擎),不過最常遇到的問題就是SMARTY引擎將{} 大括號區塊中視為它的解析語法。因此與CSS及JavaScript語法產生衝突,解決的方式有以下幾種:

1.使用{literal} {/literal}

在CSS或JavaScript語法區塊前後加上{literal} {/literal},Smarty 就不會進行解析,不過注意的是裡面就不能再增加任何變數囉。

{literal}

<style type="text/css"><!--	  body {
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}

--></style>{/literal}

2.利用 {ldelim} {rdelim} 取代左右大括號

<style type="text/css"><!--
body {ldelim}
padding-bottom: 40px;
{rdelim}
.sidebar-nav {ldelim}
padding: 9px 0;
{rdelim}
--></style>

3.重新定義delimiters

<?php
$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';
?>

4.獨立成檔案

<link id="bs-css" href="css/base.css" rel="stylesheet">
<script src="js/base.js"></script>

這樣一來就可以讓SMARTY與CSS/JavaScript和平共存!

我要留言

留言

關於 林壽山

林壽山 資深系統分析師,擅長PHP網頁設計(CodeIgniter、Laravel)框架、Delphi程式設計、資料庫設計、C# WinForm/WebForm程式設計
本篇發表於 PHP, UED/F2E, 程式設計 並標籤為 , , , , , 。將永久鏈結加入書籤。

發表迴響

你的電子郵件位址並不會被公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料