zoukankan      html  css  js  c++  java
  • 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[行宽约束]

  • 相关阅读:
    Spring温故而知新 – bean的装配
    Lambda表达式和表达式树
    委托的内部机制
    委托(C#)
    linux wdcp安装
    linux各个文件夹作用
    linux基本命令
    python调用html内的js方法
    Win10在右键菜单添加“在此处打开命令窗口”设置项
    python read文件的r和rb的区别
  • 原文地址:https://www.cnblogs.com/fredshare/p/2457147.html
Copyright © 2011-2022 走看看