Smarty数据、模版创建指引

Smarty数据、模版创建指引

1、数据的创建

信息描述的格式:

{"name":"商品链接","nick: "itemUrl","type":"url","data":[],"dataFormat":"1019"}

name   描述信息的名称,可自由df确定

nick       文本替换的标记(英文数字),如模版中使用{#$itemUrl#}对应此条标记

type      描述的类型,现支持texttextareaurlimgdateselectradiocheckboxlevel

data     typeselectradiocheckbox时有效数组中的元素为{“name”:”标签”,”value”:”替换值”}

dataFormat:当typelevel时有效,表示描述为一个嵌套内容时,所选用的格式。值可为已经存在的数据id

2、模版的创建

1)    变量输出

当数据为:

{“name”:”商品链接”,”nick”:””,”type”:”url”}, {“name”:”商品图片”,”nick”:”itemImg”,”type”:”img”}, {“name”:”商品名称”,”nick”:”itemName”,”type”:”text”}, {“name”:”商品价格”,”nick”:”price”,”type”:”text”}

结合构建稿可设计模版:

<li> <a href=“{#$itemUrl#}”>          

          <span>{#$itemName#}</span>

          <img src=“{#$itemImg#}” />

          <span>{#$price#}</span>

</a></li>

{#$xxxxx#}$xxx为描述信息的nick

2)    模版功能标签

a)      当需要指定循环范围时

使用标签

{#section name=sn  loop="$news"#} 

{#sectionelse#}there is no data.

{#/section#}

For example:

<div>             

<span>{#$itemName#}</span>                此处不替换

<ul>

{#section name=sn  loop="$news"#}

<li> <a href=“{#$news[sn].url#}”>            此处可正常替换    

         <span>{#$news[sn].itemName#}</span>

         <img src=“{#$news[sn].img#}” />

         <span>{#$news[sn].price#}</span>

</a></li>

{#/section#}

</ul>

</div>

b)     当需要指定下一级嵌套内容的循环范围时

使用标签

{#section name=sn  loop="$news"#} 

{#sectionelse#}there is no data.

{#/section#}

 

 

1section中的属性

name:(必选) section循环的名称只是标示循环唯一的名字没有特别意义,前面没有$符号;

loop: (必选)是在php声明中的变量名称,用来标示是循环哪一个数组(即要循环数组名)需要使用$

start: (可选)循环执行的初始位置. 如果该值为负数,开始位置从数组的尾部算起. 例如:如果数组中有7个元素,指定start-2,那么指向当前数组的索引为5. 非法值(超过了循环数组的下限)将被自动调整为最接近的合法值.

step: (可选)如其它语言的循环,是一个步长,如果为负数,则倒序循环;

max:(可选)循环的最大下标,如果是1则只循环1次,如果为2则循环2次;

show:(可选)默认为true即显示。如果设置了{sectionelse}。表示如果数组没有内容的时候显示这部分的内容;如果showfalse则显示这部分。如果没有设置{sectionelse}则不输出该数组。

 

2section中的变量

index:用于显示当前循环的索引,从0开始(如果指定了start属性,那么由该值开始),每次加1(如果指定了step属性,那么由该值决定).如果没有指定stepstart属性,此值的作用和iteration类似,只不过从0开始而已.

index_prev:用于显示上一个循环索引值. 循环开始时,此值为-1.

index_next:用于显示下一个循环索引值. 循环执行到最后一次时,此值仍然比当前索引值大1(如果指定了step,取决于此值).

iteration:用于显示循环的次数.iteration 不像index属性受startstepmax属性的影响,该值总是从1开始(index是从0开始的).rownum iteration的别名,两者等同.

first:如果当前循环第一次执行,first 被设置为true.

last:如果当前循环执行到最后一次,last 被设置为true.

rownum:用于显示循环的次数. 该属性是iteration的别名,两者等同.

loop:用于显示该循环上一次循环时的索引值. 该值可以用于循环内部或循环结束后.

show: section 的参数. show 取值为布尔值 true false. 如果设置为 false,该循环将不显示. 如果指定了 sectionelse 子句,该字句是否显示也取决于该值.

total:用于显示循环执行总的次数. 可以在循环中或执行结束后调用此属性.

 

 

{“name”:“链接组合", "nick":"urlLevel", "type":"level","dataFormat":[

1139]}, {“name”:”商品名称”,”nick”:”itemName”,”type”:”text”}

 

1139:

{“name”:“链接名称”, “nick”:“urlName”, “type”:“text“},

{“name”:“链接Url", "nick":"url", "type":“url“}

 

示例模版:

<div>

<span>{#$news[sn].itemName#}</span>

<ul>

{#section name=sn  loop="$news"#} 

<li> <a href=“{#$news[sn].dataFormat.url#}”>      

         <span>{#$news[sn].dataFormat.urlName#}</span>

</a></li>

{#sectionelse#}there is no data.

{#/section#}

</ul>

</div>

c)      当需要条件判断时

使用条件判断标签 {#if xxx#} {#else#}  {#/if#}xxxxphp条件表达式

if 必须于 /if 成对出现. 可以使用 else elseif 子句. 可以使用以下条件修饰词:eqneneqgtltltelegtegeis evenis oddis not evenis not oddnotmoddiv byeven byodd by==!=><<=>=. 使用这些修饰词时必须和变量或常量用空格格开.

eq相等,

neneq不相等,

gt大于,

lt小于,

gtege大于等于,

ltele 小于等于,

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

示例模版:

{#if $count is div by 4#}

</tr><tr>

{#/if#}

 

 

 

<div>

<ul>

{#section name=sn  loop="$news"#} 

<li> <a href=“{#$news[sn].url#}”>                    

         <span>{#$news[sn].itemName#}</span>

         <img src=“{#$news[sn].itemImg#}” />

         <span>{#$news[sn].price#}</span>

</a></li>

{#if $smarty.section.sn.last == true #}

最后一个内容才会有</li>

{#/if#}

{#$news[sn].itemName == “abc”#}

<li>商品名称是abc</li>

{#/if#}

{#/section#}

</ul>

</div>

d)     当需要使用表达式输出值时

smarty变量操作符

capitalize [首字母大写]

count_characters [计算字符数]

cat [连接字符串]

count_paragraphs [计算段落数]

count_sentences [计算句数]

count_words [计算词数]

date_format [时间格式]

default [默认]

escape [转码]

indent[缩进]

lower[小写 ]

nl2br[换行符替换成<br />]

regex_replace[正则替换]

replace[替换]

spacify[插空]

string_format[字符串格式化]

strip[去除(多余空格)]

strip_tags[去除html标签]

truncate[截取]

upper[大写]

wordwrap[行宽约束]

原文地址:https://www.cnblogs.com/fredshare/p/2457147.html