來源於:阿賢博客javascript
本文檔的使用到的數據($talData)
//定義talData變量 $talData = array(); $talData['title'] = 'title1'; $talData['key'] = 'key1'; $talData['href'] = 'xxx.html'; $talData['html'] = '<h1>h1標題</h1>'; $talData['fun'] = function($key=''){ return $key === 'key1'? true : false; }; //兩維數組 $talData['list1'] = array( array('id'=>'1', 'title'=>'標題1'), array('id'=>'2', 'title'=>'標題2'), array('id'=>'3', 'title'=>'標題3'), array('id'=>'4', 'title'=>'標題4') );
//輸出的數據結構 {"title":"title1","key":"key1","href":"xxx.html","html":" h1\u6807\u9898<\/h1>","fun":{},"list1":[{"id":"1","title":"\u6807\u98981"},{"id":"2","title":"\u6807\u98982"},{"id":"3","title":"\u6807\u98983"},{"id":"4","title":"\u6807\u98984"}]}
<div tal:define="global title talData/title; key talData/key"> ${title} && ${key} </div> ${title} && ${key} <!-- 結果 --> <div>title1 && key1</div> title1 &&
<div tal:define="global fname string:fname1 string; lname string:lname1 string;"> ${fname} && ${lname} </div> ${fname} && ${lname} <!-- 結果 --> <div>fname1 string && lname1 string</div> fname1 string &&
<p tal:define="global hello string:hello $fname welcome on this page"> ${hello} </p> 或 <p tal:define="global hello string:hello ${fname} welcome on this page"> ${hello} </p> <!-- 結果 --> <p>hello fname1 string welcome on this page</p>
<p tal:define="global rand php: rand(1, 4)"> ${rand} </p> <!-- 結果 --> <p>2</p>
<tal:block> <p>渲染1</p> </tal:block> <tal:block tal:replace=""> 不渲染這裏 </tal:block> <tal:block tal:replace="talData/title"> <p>不渲染這裏</p> </tal:block> <p>${talData/title}</p> <!-- 結果 --> <p>渲染1</p> title1 <p>title1</p>
<p tal:content="talData/title"> test data<span>tips</span> </p> <!-- 結果 --> <p>title1</p>
<p class="p p_${talData/title}">${talData/title}</p> <!-- 結果 --> <p class="p p_title1">title1</p>
<a href="http://www.foo.com" title="some foo link" tal:attributes="href talData/href; title talData/title" tal:content="talData/key">sample link</a> <!-- 結果 --> <a href="xxx.html" title="title1">key1</a>
<span tal:on-error="string: 當前數據不存在" tal:content="talData/key">key 已是定義了</span> <span tal:on-error="string: 當前數據不存在" tal:content="talData/ky">ky 沒有定義的</span> <!-- 結果 --> <span>key1</span> 當前數據不存在
<p tal:condition="php: true" tal:content="talData/title">標題</p> <p tal:condition="php: talData['key'] == 'key1'" tal:content="talData/key">關鍵詞</p> <p tal:condition="php: key == 'key1'" tal:define="key talData/key" tal:content="talData/key">關鍵詞</p> <p tal:condition="talData/key" tal:content="talData/key">關鍵詞</p> <p tal:condition="talData/fun" tal:content="talData/key">關鍵詞</p> <!-- 結果 --> <p>title1</p> <p>key1</p> <p>key1</p> <p>key1</p>
<ul tal:repeat="item talData/list1"> <li tal:condition="php: repeat.item.index == 0"> repeat/item/key: ${repeat/item/key} ;(若是talData/list1是一組聯合對象,返回item的鍵)<br/> repeat/item/index: ${repeat/item/index} ;(返回索引號(0~count-1))<br/> repeat/item/number: ${repeat/item/number} ;(返回索引號(1~count))<br/> repeat/item/even: ${repeat/item/even} ;(若是是偶數,true)<br/> repeat/item/odd: ${repeat/item/odd} ;(若是是奇數,true)<br/> repeat/item/start: ${repeat/item/start} ;(若是是第一個元素,true)<br/> repeat/item/end: ${repeat/item/end} ;(若是是最後一個元素,true)<br/> repeat/item/length: ${repeat/item/length} ;(返回talData/list1裏面元素個數)<br/> ------------- </li> <li tal:condition="php: repeat.item.index > 0" tal:content="item/title">列表li</li> </ul> <!-- 結果 --> <li> repeat/item/key: 0 ;(若是talData/list1是一組聯合對象,返回item的鍵)<br/> repeat/item/index: 0 ;(返回索引號(0~count-1))<br/> repeat/item/number: 1 ;(返回索引號(1~count))<br/> repeat/item/even: 1 ;(若是是偶數,true)<br/> repeat/item/odd: 0 ;(若是是奇數,true)<br/> repeat/item/start: 1 ;(若是是第一個元素,true)<br/> repeat/item/end: 0 ;(若是是最後一個元素,true)<br/> repeat/item/length: 4 ;(返回talData/list1裏面元素個數)<br/> </li> <li>標題2</li> <li>標題3</li> <li>標題4</li>
<p tal:omit-tag="php: false"> omit-tag值爲真,不出現當前p標籤,不然就出現當前p標籤 </p> <p tal:omit-tag="php: true"> omit-tag值爲真,不出現當前p標籤,不然就出現當前p標籤 </p> <!-- 結果 --> <p>omit-tag值爲真,不出現當前p標籤,不然就出現當前p標籤</p> omit-tag值爲真,不出現當前p標籤,不然就出現當前p標籤
<tal:block tal:repeat="x php:range(1,10)" tal:content="x">文字會出現十次</tal:block> <!-- 結果 --> 12345678910
<!-- 在pWeb/_macro/common.html文件中代碼 --> <tal:block metal:define-macro="WinPageData"> <script type="text/javascript"> window.WinPageData = ${structure WinPageData}; </script> </tal:block>
<tal:block metal:use-macro="pWeb/_macro/common.html/WinPageData"> 當前內容會被宏替換掉 <script type="text/javascript"> window.WinPageData = {}; </script> </tal:block> <div metal:use-macro="${路徑變量}/macros.html/main_menu"></div>
<!-- 在pWeb/_macro/mlog.html文件中代碼 --> <tal:block metal:define-macro="mobile"> <script> <metal:block define-slot="mlog_page"> var mlog_page = 'mobile_other'; </metal:block> var mlog_track = function(){}; </script> <script src='xxx.js'></script> </tal:block>
<tal:block metal:use-macro="pWeb/_macro/mlog.html/mobile"> <tal:block metal:fill-slot="mlog_page"> var mlog_page = 'mobile_index'; </tal:block> </tal:block>
<!-- 在pWeb/_macro/mlog.html文件中代碼 --> <tal:block metal:define-macro="conent"> <p>${title}</p> <p>${key}</p> </tal:block>
<tal:block metal:use-macro="pWeb/_macro/mlog.html/conent" tal:define="title '標題'; key '關鍵詞'"></tal:block>
<div class="footer" phptal:cache="3h">...</div> 有效期能夠有選擇的跟隨'per'參數來定義多少個緩存被共享,使用'per url'分別針對每一個url複製元素. <ol id="breadcrumbs" phptal:cache="1d per url">...</ol>
php:htmlentities(foo) php:'string ${varReplaced}' php:'string ${some.path().to[0].var}' php:foo.a.b.c(e).htmlentities(SomeClass::staticMethod()) php:SomeClass::ConstOfClass php:SomeClass::$staticVar
<span tal:condition="not: logged">not logged</span> <!-- 結果 --> <span>not logged</span>
<span tal:condition="exists: talData/title" tal:content="talData/title">存在</span> <!-- 結果 --> <span>title1</span>
<span tal:define="myVar talData/title | default"> default my var value </span> <p tal:content="some/var | other/path | default"> 沒有var,沒有找到path </p> <a href="unknown.html" title="Unknown page" tal:attributes="href item/href | default; title talData/title | default" tal:content="item/title | default">Unknown page</a> <!-- 結果 --> <p>沒有var,沒有找到path</p> <a href="unknown.html" title="title1">Unknown page</a>
注意存在XSS攻擊風險,謹慎使用
<div tal:content="talData/html"></div> <div tal:content="structure talData/html"></div> <!-- 結果 --> <div><h1>h1標題</h1></div> <div><h1>h1標題</h1></div>
<div>${talData/html}</div> <div>${structure talData/html}</div> <!-- 結果 --> <div><h1>h1標題</h1></div> <div><h1>h1標題</h1></div>
來源於:阿賢博客php