有时候部分模æ�¿ä¸çš„代ç �是ä¸�需è¦�或者ä¸�希望被Smartyè§£æž�的, 比较典型的例å�是嵌入在页é�¢HTMLä¸çš„Javascript或CSS代ç �。 问题通常å�‘生在这些è¯è¨€ä¼šç»�常使用{ å’Œ },但{ å’Œ }也æ�°å¥½æ˜¯Smartyçš„ 定界符。
Note
é�¿å…�被解æž�的一个良好方å¼�ï¼Œæ˜¯åˆ†ç¦»ä½ çš„Javascript/CSS代ç �到å�•独的文件ä¸ï¼Œ ç„¶å�Žåœ¨HTMLä¸å¼•å…¥å®ƒä»¬ã€‚è€Œä¸”è¿™æ ·ä¹Ÿæœ‰åˆ©äºŽæµ�览器进行缓å˜ã€‚ å½“ä½ éœ€è¦�嵌入Smartyçš„å�˜é‡�或者函数到Javascript/CSSä¸ï¼Œè¯·å�‚考下é�¢çš„æ–¹å¼�:
Smarty模æ�¿ä¸ï¼Œå½“{ å’Œ }å®šç•Œç¬¦ä¸¤è¾¹éƒ½æ˜¯ç©ºæ ¼çš„æ—¶å€™ï¼Œå°†ä¼šè¢«è‡ªåŠ¨å¿½ç•¥è§£æž�。
æ¤ç‰¹æ€§å�¯ä»¥é€šè¿‡è®¾ç½®Smartyçš„æˆ�员å�˜é‡�
$auto_literal为falseæ�¥å…³é—。
Example 3.8. 使用自动忽略解�的特性
<script>
// 下é�¢çš„å®šç•Œç¬¦ä¸¤è¾¹éƒ½æ˜¯ç©ºæ ¼ï¼Œæ‰€ä»¥å�¯ä»¥è¢«è‡ªåŠ¨å¿½ç•¥è§£æž�
function foobar {
alert('foobar!');
}
// 下�需�手动忽略解�
{literal}
function bazzy {alert('foobar!');}
{/literal}
</script>
{literal}..{/literal}å�¯ä»¥è®©å�—ä¸é—´çš„内容忽略Smarty的解æž�。
在需�使用定界符的时候,�以通过
{ldelim},{rdelim}æ ‡ç¾ï¼Œæˆ–者
{$smarty.ldelim},{$smarty.rdelim}的���使用。
Smarty的默认定界符{ 和 }�以整�地界定一般内容的显示。
ç„¶è€Œä½ å�¯ä»¥é€šè¿‡ä¿®æ”¹Smartyçš„
$left_delimiter 和
$right_delimiter 的��值,设置更适�的定界符。
Note
修改定界符会影å“�到全部模æ�¿ä»£ç �和解æž�,请确ä¿�在修改å‰�已清除了全部的缓å˜å’Œç¼–译文件。
Example 3.9. 改å�˜å®šç•Œç¬¦çš„例å�
<?php
$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';
$smarty->assign('foo', 'bar');
$smarty->assign('name', 'Albert');
$smarty->display('example.tpl');
?>
模�:
Welcome <!--{$name}--> to Smarty
<script language="javascript">
var foo = <!--{$foo}-->;
function dosomething() {
alert("foo is " + foo);
}
dosomething();
</script>
