參考鏈接:http://hi.baidu.com/bdusnb/item/289d160e6a9c92cd9157183d
參考鏈接:http://hi.baidu.com/mayimu789/item/b565088d047da0d05f0ec16f
參考鏈接:http://blog.sina.com.cn/s/blog_8155e74d0101el2k.html
Smarty 3 :大括號問題
smarty如何避免大括號、超鏈接如何去掉下劃線
本文向大家描述一下避免Smarty與CSS語法沖突的三種方法,Smarty和CSS的語法存在沖突,因為二者都需要使用大括號{}。如果簡單地將CSS標記嵌入到HTML文檔首部,將導致"不可識別標記"錯誤。
避免Smarty與CSS語法沖突
熟悉CSS的人很快就會發現Smarty和CSS的語法存在沖突,因為二者都需要使用大括號{}。如果簡單地將CSS標記嵌入到HTML文檔首部,將導致"不可識別標記"錯誤:
<html><head><title>{$title}</title><style type="text/css">p{ margin::2px } </style></head>...
不要擔心,因為我們有3種解決方案。
一、使用link標記從另一個文件中提取樣式信息:
<html><head><title>{$title}</title><link rel="stylesheet" type="text/css" href="default.css"/></head>...
二、使用Smarty的literal標記將樣式表信息包圍起來
這些標記告訴Smarty不要解析該標記內的任何內容:
<html><head><title>{$title}</title>
{literal} <style type="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的重要默認配置(定界符)。
超鏈接如何去掉下劃線
在源代碼中的<HEAD>…</HEAD>之間輸入如下代碼:
<style type="text/css">
<!--
a { text-decoration: none}
-->
</style>
或者直接加入超鏈接中:
<a style= "text-decoration:none " href=#> fason </a>
Smarty 3 :計算數組個數問題
分配了一個數組array給Smarty,假設Smarty的分界符為'{' 和'}'。
在很多資料上都看到,在Smarty中要求數組的長度時,可以用在數組后便 加|count的方法調用。
即通過{array|count}獲得array的長度。
但是今天在寫模板時,發現這樣得不到數組的長度,而只是得到一個返回 的字符串Array。
也就是說僅僅是返回了{array}的結果,而沒有返回其array的長度。
查看smarty\plugins文件夾,發現并沒有count的相關方法,也就是說,count是直接調用了php中的方法。
后來通過網絡上的資料,發現可以在count前面加@,從而正確的獲取數組的長度。
再進一步查看Smarty的源碼,發現Smarty對屬性調節器后邊的方法名進行處理時,會對前邊加@的進行特殊處理。
因此作出判斷:
在Smarty中的屬性調節器中調用php中定義好的函數時,可以通過加@來表示。
1、對類型為數組的方法進行測試時,發現不加@符號都會出錯。
??? 比如:要對一個數組調用count方法求出數組的長度,就可以這樣調用{array|@count},而要對數組調用end方法得出數組的最后一組數據時,則可以通過{array|@end}。
2、在對字符串的相關函數進行測試,發現加不加@都可以正常的調用。
3、其他的尚未認真測試。
對于在smarty中調用復雜的php函數不予鼓勵,因為Smarty的本意就是要實現代碼和模板分離,應該認定模板就是界面設計的人員用的,如果過多地加復雜邏輯,對他們來說就是一種折磨了。www.relaxcool.com/
Smarty 3 :字符串拼接
PHP頁面傳到Smarty模板上的變量(這里用,在Smarty上創建兩個變量代替)
{assign var="name" value='Richard.Lee'}
{assign var="age" value='27'}
1、想要在Smarty模板的某個位置輸出(Richard.Lee---27)
?
?
?
2、想要在Smarty模板的某個位置輸出(姓名:Richard.Lee,年齡:27)
?
?
?
?
備注:在網上找到的方法,不是很理解|cat:的作用,但是經過兩個簡單的例子得出簡單結論:可以把|cat:當成是鏈接字符串的符號,相當于PHP文件中的點(.)。