基本語法
所有的smarty標籤都被加上了定界符.在smarty裡,所有定界符以外的內容都是靜態的,當smarty遇到了模板標籤,將嘗試解釋他們,然後再以恰當的方式輸出.
預設是 {和},但它們是可自訂的.自訂方法是:
$smarty->left_delimiter = '';
1.註釋
模板註釋被*號包圍,例如 {* this is a comment *}
smarty註釋將不被輸出.它是模板內在的註釋.
2.變數
範本變數以$開頭,可以包含數字,字母和底線。
config_file變數是例外要用#變數名稱#的方法引用
3.函數
smarty標籤輸出變數或呼叫某種函數.
在定界符內函數和其屬性將被處理與輸出.例如:
{funcname attr1="val" attr2="val"}.
funcname為函數的名稱例如:include等,attr1,attr2為屬性名,val為對應屬性的值。
在模板裡無論是內建函數或自訂函數都有相同的語法.
內建函數將在smarty內部工作,例如 {if}, {section} 和{strip}.他們不能被修改.
自訂函數透過外掛機制運作,它們是附加函數,可以隨意修改,自行加入.
例如 {html_options} and {html_select_date}
4.屬性
靜態數值不需要加上靜態數值引號,布林值(真或假)也不需要引號,可以是true,on,yes或false,off,no. 但是字串例外.變數同樣被用到了,它們也不能加引號.
5.在字串中插入變數
只能辨識數字,字母,下劃線和[]的組合,如果為複雜的形式需要用``將變數隔起來。例如{func var="test $foo.bar test"} 中只能辨識變數$foo,要辨識$foo.bar,需要寫成{func var="test `$foo.bar` test"}的格式。
6.某些保留字的顯示方法
在模板中如果要將smarty的一些保留字作為語言的內容顯示出來,例如顯示分隔符,預設為{}的方法是: {ldelim},{ rdelim} 或{$smarty.ldelim},{$smarty.rdelim} 或可以把{}放在{literal} .. {/literal} 中間輸出。
smarty的保留變數
{$smarty}保留變數可以用來存取一些特殊的範本變數.
以下是全部.
頁面請求變數
以下是存取頁面請求變數諸如get,post,cookies,server,enviroment和session變數的例子. 例如{$smarty.server.SERVER_NAME}取得伺服器變量,{$smarty.env.PATH}取得系統環境變數path, {$smarty.request.username}取得get/post/cookies/server/env的複合變數。
{$smarty.now}變數用來存取目前時間戳記.
可以用 date_format調節器格式化輸出. 例如{$smarty.now|date_format:"%Y-%m-%d %H: %M:%S"}
{$smarty.const}
你可以直接存取PHP常數. 例如{$smarty.const._MY_CONST_VAL}
{$smarty.capture}
可以透過{ capture}..{/capture}結構 截取的輸出可以使用{$smarty} 變數存取.
{$smarty.config}
{$smarty}變數 可以存取已載入的config變數.
例如{$smarty.config.foo}就可以表示 {#foo#}.
{$smarty.section}, {$smarty.foreach}
{$smarty} 變數可以存取'section'和'foreach'循環的屬性.
{$smarty.template}
顯示目前被處理的模板的名字.
{$smarty.version}
顯示smarty模板的版本
{$smarty.ldelimdely. }
顯示左分隔符號
{$smarty.rdelim}
顯示右邊分隔符號
變數調節器
變數調節器用於變數,自訂函數與字串.
可以使用'|'符號和調節器名稱應用調節器.
變數調節器由賦予的參數值決定其行為.
參數由':'符號分開.
如果你用變數調節器調節數組變數,結果是數組的每個值都被調節.如果你想要調節器調節整個數組,你必須在調節器名字前加上@符號.
例如: {$articleTitle|@count}(這將會在輸出 $articleTitle 數組裡的數目)
capitalize
將變數裡的所有字首大寫. 參數值boolean型決定帶數字的字是否首字大寫。預設不大寫
count_characters
計算變數值裡的字元數.參數值boolean型決定是否計算空格數。預設不計算空格
cat
將cat裡的參數值連接到給定的變數後面.預設為空。
count_paragraphs
計算變數裡的段落數量
count_sentences
計算變數裡句子的數量
count_words
計算變數裡的詞數
count_words
計算變數裡的詞數
date_form >第一個參數控制日期格式.
如果傳給date_format的資料是空的,將使用第二個參數作為預設時間
%a - 星期幾的簡稱
%A - 星期星期的全寫
%b - 月份的簡寫
%B - 月份的全寫
%c - 日期時間06/12/05 11:15:10
%C %d - 一個月的第幾號(從 01 到 31)
%D - 同 %m/%d/%y
%e - 一個月的第幾號,號為單數則前面加一一空格 (從 1 到 31)
%g - 世紀
%G - 世紀 [0000,9999]
%h - 同%b %h - 同%b %I - 12小時形式的小時(從01到 12)
%j - 一年中的第幾天(從 001 到 366)
%k - 24小時的形式單數字前面加空格. (從 0 到 23)
%l - 12小時形式的小時,單數字前面加空格.(range 1 to 12)
%m - 月份 (range 12)
%m - 月份 (range 012)to 🎜>%M - 分
%n - 換行符
%p - 顯示早上或下午`am' 或 `pm'
%r a.m. 或 `pm'
%r 小時形式的時間
%S - 秒
%t - tab符號
%T - 同%H:%M:%S
%u - 用 [1,7],表示星期幾
%U - 計算是該年的第幾個星期,從該年的第一個星期天開始計算
%V - 計算是該年的第幾個星期, 從 01 到 53, 第一個星期必須至少有4天在這一年, 星期天作為這個星期的第一天
%w - 用數字的形式表示是星期的第幾天, 星期天 為 0
%W - 用數字的形式是該年的第幾個星期,從該年的第一個星期一開始計算
%x - 顯示日期:月/日/年
%X - 顯示時間:小時:分鐘:秒
%y - 不包括世紀的年份
%Y - 包括世紀的年份
%Z - 時區
%% - 輸出%
其中有些有時無法正常輸出。
default
預設
為空變數設定預設值.
當變數為空或未指派的時候,將由給定的預設值替代輸出.
escape
轉碼
參數值為html,htmlall,url,quotes,hex,hexentity,javascrīpt。預設是html轉碼
indent
縮排
在每行縮排字串,第一個參數指定縮排多少個字符,預設是4個字元.第二個參數,指定縮排用什麼字元代替。
lower
小寫
This is used to lowercase a variable.
將變數字串成小寫
nl2brf
取代
尋找並取代正規表示式.必須有兩個參數,參數1是取代正規表示式. 參數2使用何種文字字串來取代
replace
取代
簡單的搜尋與替換字串必須有兩個參數,參數1是將被替換的字串. 參數2是用來替換的文字
spacify
spacify是在字串的每個字元之間插入空格或其他的字符字串. 參數表示將在兩個字元之間插入的字串,預設為一個空格。
string_format 字串格式化
是一種格式化浮點數的方法.例如十進位數.使用sprintf語法格式化。參數是必須的,規定使用的格式化方式。 %d表示顯示整數,%.2f表示截取兩個浮點數。
strip 去除(多餘空格)
取代所有重複的空格,換行和tab為單一或指定的字串. 如果有參數則是指定的字串。
strip_tags 去除所有html標籤
truncate 截取
參數1,規定截取的字元數.預設為80個.
第二個參數指定在截取的那段字串後加上什麼字元.預設為...
第三個參數決定是否精確截取,預設為false,則smarty不會分割單字。
upper 將變數改為大寫
wordwrap 行寬約束
第一個參數指定段落的寬度(也就是多少個字元一行,超過這個字元數換行).預設80.
第二個參數指定在約束點使用什麼字符(預設是換行符n).
第三個參數決定是否精確截取字符,預設是不精確截取,就是截取時不能分開單字。
內建函數
內建函數不能擅自修改。
capture
capture函數的作用是收集模板輸出的數據到一個變數裡,而不是把它們輸出到頁面.例如任何在 {capture name="foo"}和{/capture}之間的數據都被收到了由函數的名稱屬性指定的變數{$foo}裡,或{$smarty.capture.foo}裡。如果函式沒有名字屬性,會使用"default".每個{capture}都必須對應{/capture},也不能嵌套使用capture函式。
config_load
引用設定檔
file是必須的,說明要包含進來的設定檔名稱,section說明要載入的部分的名稱,scope被處理的變數的作用域.必須是local,parent或global.
local的意思是變數將在本模板裡被載入.
parent 的意思是變數將在本模板和上級模板被載入.
global的意思是變數將應用到所有的模板.預設為local。變數是否在上級模板可視,預設為no。如果scope屬性已經有了,這個值將被忽略.
foreach,foreachelse
foreach循環是選擇性的section循環.用於遍歷關聯數組.foreach的語法比section簡單的多,但是作為一個折中它只能用於簡單數組.
foreach必須的參數是from和item. from變量表示需要循環的數組的名稱,item表示當前元素的變量名,key表示當前關鍵字的變量名,name表示存取foreach屬性的foreach迴圈名。循環可以互相嵌套,被嵌套的循環之間的名字必須是獨立的.foreachelse 在from變量沒有值的時候被執行
include
用來引用其他的模板。
file屬性是必須的用來表示所引用模板的名字,assign表示include檔案將要指派的輸出的變數。你可以自行用屬性名="屬性值"的方式定義任意個局部變數。
include_php
用來在模板中引入php腳本。 file是必須的用來表示php腳本的路徑,once確定如果在模板中引用了php腳本多次,是否只裝載一次。預設為true。
insert
用來包含php腳本中的函數,name是必須的,表示所插入的腳本的名稱,注意如果名稱是name,則包含的函數則是insert_name(),所以所有要插入的函數要有前綴insert_ 。如果用了assign屬性,則insert的輸出將會指派給範本變數而不會顯示。 scrīpt表示要引用的腳本路徑。這個程式產生的內容將不會被緩存,在每次調用該頁時重新執行,適用於廣告,投票,查詢結果等互動的地方。
if,elseif,else
if語句和條件同php差不多,但每個字之間必須用空格分割開。也有一些新的條件語句,列舉如下:eq相等,ne、neq不相等,gt大於,lt小於,gte、ge大於等於,lte、le 小於等於,not非,mod求模。 is [not] div by是否能被某數整除,is [not] even是否為偶數,$a is [not] even by $b即($a / $b) % 2 == 0,is [not] odd是否為奇,$a is not odd by $b即($a / $b) % 2 != 0
php
php標記可讓範本中能直接使用php語言。
section,sectionelse
section用來循環顯示陣列的數據,name和loop是必須的參數。 name表示嵌套名. section 可以嵌套使用,但是名字必須各不相同。 loop表示循環的次數. sectionelse在loop參數為空的輸出。start用來規定循環開始的指標,如果值為負則從數組尾部計算開始的指標,預設為0.step表示循環的步數,為負則反向循環,預設為1.max設定循環的最大步數.show決定是否顯示section.
section也有自己的變數處理section屬性,用{$smarty.section.sectionname.varname} 來顯示.
index
index用來顯示目前循環的指標,從0開始.
index_prev
用來顯示前一次循環的指針,從-1開始
index_next
用來顯示後一次循環的指針.
iteration
用來顯示後一次循環的指針.
iteration
當前循環的指針.
iteration
循環的次數,從1開始.
first
如果當前循環為第一個循環,則值為true.
last
如果當前循環為最後一個循環,則值為true.
rownum
同iteration.
loop
顯示最後一次循環的指針,可以用在section中間的任何地方,也可以用在section之後.
show
show 決定是否顯示section.
total
顯示總共循環的次數,可以用在section中間的任何地方,也可以用在section之後.
strip
去掉多餘的常規空格
常規空格 assign
assign用來執行範本時指派變數值.var,value是必須的參數.var為要指派值的變數名稱,value為指派的值.
counter
counter用來輸出一個計數. 可以用多個計數,但是名字必須各不相同.name表示計數器名,預設為default.start表示計數的初始值,預設為1.skip計數的間隔,預設為1.direction表示計數方向,up或down,預設為up.print表示是否列印該值,預設為true.assign定義範本變數,計數器的輸出將被指派到assign定義的變數中.
cycle
Cycle用來循環顯示一組數值.name表示cycle名,values("值1","值2",...)表示循環顯示的一組數值.print表示是否顯示.advance決定是否顯示下一個數值. delimiter決定value的分隔符,預設為逗號. assign定義範本變數,cycle的輸出將被分配到assign定義的變數中.
debug
debug可以顯示所有分配了值的變數,但是不顯示範本內容,output屬性決定顯示的格式html或javascrīpt,預設是html.
eval
eval用來在變數裡插入變數。 var是插入的變數名,assign把輸出分配給一個變數。
fetch
用來取得文件內容,並輸出文件內容,可以取得本機文件,http檔和ftp文件,file是取得文件的路徑, assign把輸出分配給一個變數。
html_checkboxes
html_checkbox用來用給定的資料建立checkbox。 name表示checkbox的名稱,values表示checkbox的值,output表示checkbox的顯示,selected表示被選選項的值,options表示一組checkbox的值和顯示,separator表示分割每個checkbox的符號,labels表示給輸出添加標籤,預設為true。
html_image
html_image用來為一個圖片建立html標籤,如果height和width不分配值將會自動產生。 file是圖片的路徑,height,width,alt同html標籤,basedir是圖片相對路徑開始的目錄的路徑,預設為伺服器根目錄。 href定義圖片的連結。
html_options
輸出下拉列表,參數有name,values,output,selected,options。
html_radios
輸出單選框,參數同複選框。 html_select_date prefix定義各個下拉清單名字的前綴,預設為Date_。 time決定使用的時間,預設是當前時間。 start_year決定下拉清單開始的年份,可以用年份表示,也可以用與目前年份的相對年數來表示。預設是當前年份。 end_year決定下拉清單結束的年份,可以用年份表示,也可以用與目前年份的相對年數來表示。預設是當前年份。 display_days決定是否顯示日期。 display_months決定是否顯示月份。 display_years決定是否顯示年份。 month_format決定顯示月份的格式,預設為%B。 day_format決定顯示日期的格式,預設為%02d。 day_value_format決定日期值的格式,預設為%d。 month_value_format決定月份值的格式,預設為%m。 year_as_text決定是否將年份以文字格式輸出。 reverse_years決定是否反向輸出各年份。 field_array用來取得一組變量,可以用name[Day],name[Month],name[Year]的方式從form取得的值。 day_size,month_size,year_size新增大小標籤。 all_extra,day_extra,month_extra,year_extra添加額外的屬性到select或input標籤。 field_order決定年月日下拉清單的順序,預設為MDY。 field_separator不同下拉清單之間的分隔符,預設是n。 year_empty,month_empty,day_empty是在各下拉清單第一欄顯示的內容。 html_select_time prefix定義各個下拉清單名字的前綴,預設為Time_。time決定使用的時間,預設是當前時間。 display_hours決定是否顯示小時。 display_minutes決定是否顯示分鐘。 display_seconds決定是否顯示秒數。 display_meridian 決定是否顯示上午或下午,即顯示am/pm。 use_24_hours 決定是否24小時制。 minute_interval 決定分鐘之間的間隔。 second_interval 決定秒數之間的間隔。 field_array用來取得一組變量,可以用name[Hour],name[Minute],name[Second]的方式從form取得的值。 all_extra,hour_extra,minute_extra,second_extra ,meridian_extra新增額外的屬性到select或input標籤。
html_table
loop定義用於循環的一組資料。 cols決定列的數目,rows決定行的數目,如果其中一個為空,另一個有值,則根據元素個數和有值的屬性來計算另一個的值,兩者的預設值為3。 inner決定元素的列舉方向cols則列跟著列排列,rows則行跟著行排列,預設為cols。 table_attr,tr_attr,td_attr分別為table,tr,td增加標籤,如果tr_attr,td_attr是數組,將會循環增加標籤。 trailpad用來填滿最後一行沒有值的儲存格,預設是 。 hdir決定每行元素的排列方向,由左至右right或由右至左left,預設為right。 vdir決定每列的排列方向,從上到下down或從下到上up,預設為down。
math
進行數字運算運算。 equation和var是必須的。 equation定義運算式,可以使用的運算子有+, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, log, log10, max, min, pi, pow, rand, log10, max, min, pi, pow, rand, and tan。 var為運算變數賦值。 format確定結果的格式。 assign將輸出賦給一個參數。
mailto
使用mailto函數能讓網路蜘蛛很難取得你的email位址,但能在網頁上正常顯示,因為他把email位址進行了加密處理。 address是必須的,定義email地址。 text是顯示在頁面上的文字內容,預設是email地址。 encode是加密email位址的方式,可以是none,hex或javascrīpt,預設是none。如果要把郵件寄給其他的信箱,可以用cc抄送,email地址之間用,分割。 bcc則為密件副本。 subject是郵件主題。 newsgroups是發表內容的新聞群組,新聞群組之間用,隔開。 extra新增附加標籤。 followupto意思不知。
textformat
textformat用來格式化文本,他會去掉空格和特殊字符,和規定行寬和縮排。 style規定目前的格式,indent規定縮排的位數。 indent_first規定第一行的縮排。 indent_char用來縮排的字符,預設是一個空格。 wrap規定行寬,即一行的字元數,預設是80。 wrap_char規定每行的分隔符,預設是n。 wrap_cut決定是否分割單字。 assign將輸出指派給變數。
常數
SMARTY_DIR
是到smarty類目錄的完整路徑,必須以/結束。如果沒有定義,將會自動決定路徑.
SMARTY_CORE_DIR
是到smarty類別core檔案目錄的完全路徑,必須以/結束。如果沒有定義,將會自動定義為smarty_dir路徑下方的子目錄.
變數
$template_dir
預設的範本目錄名,預設為"./templates".
$compile_dir
預設的編譯模板目錄名,預設為"./templates_c"
$config_dir
預設的config檔目錄名,預設為"./configs".
$plugins_dir
預設的插件目錄名,預設為"plugins".
$debugging
debugging控制台。即一個顯示變數的視窗.
$debug_tpl
debug視窗的範本
$debugging_ctrl
另一個控制debugging的方法。
$autoload_filters
對所有的模板使用過濾程序,這個變數是一個數組,其中關鍵字是過濾的類型,值是過濾的名字。
$compile_check
每次php執行都會是否查看範本的內容是否改變。
$caching
決定是否快取檔案執行產生的檔案。
$cache_dir
預設的範本快取目錄名,預設為"./cache".
$cache_lifetime
快取的範本的過期時間,以秒計算. $caching值為-1則快取的模板永不過期.
最後我放個我用的例子.大家只做一個參考吧
error_reporting(7);
$TurnDot = substr(PHP_OS, 0, 3) == 'WIN' ? ";" : ":" ;
$doc_root=$_SERVER['DOCUMENT_ROOT']; // an-cool.com/Web" ; //這裡是指定路徑
$lib_root=".".$TurnDot.$doc_root."/shopadmin".$TurnDot.$doc_root."/shopadmin/inc".$ TurnDot.$doc_root."/".$TurnDot.$doc_root."/jpgraph/src/".$TurnDot.$doc_root."/Smarty/libs/".$TurnDot.$doc_root."/Smarty";
ini_set("include_path",$lib_root);
include("conf.global.php"); //這裡是載入一個全域設定檔.
$Templates_root = $doc_root."/templates"; /定義觸摸版根目錄
define("Templates",$Templates_root);
$templates = isset($INFO['templates']) ? $INFO['templates'] >include_once('Smarty.class.php');
$tpl = new Smarty(); ///建立smarty實例物件$tpl
$tpl->debugging; = Templates."/".$templates ; ."/templates_c"; //設定編譯目錄
$tpl->cache_dir = $doc_root."/cache";
$tpl->caching = false; //這裡是調試時設定為false,發佈時請使用true
$tpl->left_delimiter = '$tpl->left_delimiter = '$tpl->left_delimiter = '$tpl }>';
$tpl->assign("template_dir", $INFO['site_url']."/templates/".$templates ); //摸板路徑
$tpl->assign(" Site_Url", $INFO['site_url']); //主機站URL
$tpl->assign("LanguageIs", $INFO['IS']); //語言包類型🎜 >assign("HtmlTitle", $INFO['site_title']); //TITLE內容
$tpl->assign("HtmlMeta", $INFO['meta_keyword']); >
以上就介紹了shavarsh karapetyan PHP詳細徹底學習Smarty,包括了shavarsh karapetyan方面的內容,希望對PHP教程有興趣的朋友有所幫助。

長URL(通常用關鍵字和跟踪參數都混亂)可以阻止訪問者。 URL縮短腳本提供了解決方案,創建了簡潔的鏈接,非常適合社交媒體和其他平台。 這些腳本對於單個網站很有價值

在Facebook在2012年通過Facebook備受矚目的收購之後,Instagram採用了兩套API供第三方使用。這些是Instagram Graph API和Instagram Basic Display API。作為開發人員建立一個需要信息的應用程序

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

這是有關用Laravel後端構建React應用程序的系列的第二個也是最後一部分。在該系列的第一部分中,我們使用Laravel為基本的產品上市應用程序創建了一個RESTFUL API。在本教程中,我們將成為開發人員

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

2025年的PHP景觀調查調查了當前的PHP發展趨勢。 它探討了框架用法,部署方法和挑戰,旨在為開發人員和企業提供見解。 該調查預計現代PHP Versio的增長


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。