• Tipask 的模板采用近似 PHP 表达式的语法,和Discuz基本是一样的。


    支持的元素如下:

    * <!–{ … }–>
    逻辑元素包围符,该符号用于包含条件和循环元素
    o 条件判断

    <!--{if expr1}-->

    statement1

    <!--{elseif expr2}-->

    statement2

    <!--{else}-->

    statement3

    <!--{/if}-->

    复制代码这是一个典型的条件模板,当条件 expr1 为真时,显示模板 statement1 内容,否则当 expr2 为真时,显示模板statement2 内容,否则显示模板 statement3 的内容。如同其他语言中的条件控制一样,其中 <!–{elseifexpr}–> 和 <!–{else} –> 是非必须的。

    o 不带下标变量的数组循环

    <!--{loop $array $value}-->

    statement

    <!--{/loop}-->

    复制代码相当于 PHP 的数组循环语句:

    foreach($array as $value) {

    statement

    }

    复制代码 o 带下标变量的数组循环

    <!--{loop $array $key $value}-->

    statement

    <!--{/loop}-->

    复制代码相当于 PHP 的数组循环语句:

    foreach($array as $key => $value) {

    statement

    }

    复制代码逻 辑元素包围符在 { } 外面包含了 html 的注释符号 <!– –>,除了为了和信息元素相区别外,也方便了使用 Dreamweaver 和 Frontpage 之类工具编辑模板的用户。因逻辑元素会被识别为 html 的注释而不被显示,对于绝大多数用户,逻辑元素中的内容是完全不需要修改的,甚至修改错一个字符就可能引起错误信息和整个系统无法运行。因此通常您在修改 模板的时候,不要修改模板的逻辑信息,更不要将逻辑信息内部元素(如 <!–{else}–> 等)的前后位置作以修改,否则可能会导致错误。如果您的模板被不慎修改损坏,请立即用原标准默认模板覆盖,即可恢复。

    对于高手而言,实际上外部的 <!– –> 是可以省略不写的,可以用于某些元素在模板中的定位,但强烈建议普通用户不要轻易尝试。
    * { … }

    信息元素包围符
    o {CONSTANT}
    可以引用界面替换变量,其中必须为大写字母,该符号实际的作用是引用 PHP 常量 CONSTANT,因此也可以通过它来引用其他的常量内容。

    o {url control/model}
    这个是Tipask特有的语法,用于url的定义。例如提出问题的地址在模板里面应该是 :{url question/ask}
    注册的地址:{url user/register}
    如果有多个参数都用“/”隔开,例如浏览qid=1的问题,地址是:{url question/view/1}

    o {template name}
    模板嵌入符,为了避免模板的冗长,可以使用本符号来将 name 模板的内容嵌入本模板中(实际上为引用)。

    o {eval statement}
    运行 PHP 语句体 statement。推荐只在特别必须的时候才使用该结构,因为它会破坏模板的结构和可读性。如 {eval echo ‘template!’;} 实现的功能为 echo ‘template’;

    o {LF}
    换行符,因为模板引擎会忽略掉多余的换行(\n),这个符号用来成生需要的 \n。

    我 们所推荐的模板修改方法:通过普通编辑器手工书写 html 或通过 Dreamweaver 或 Frontpage 修改。但是修改需切记,同一逻辑元素内或嵌套中元素的位置和内容切勿修改,即通常情况下,您不能把 <!–{}–> 包围的内容单独的移动,更不能删除。但是整个最外部逻辑结构是可以移动或删除的。

    如果修改后模板所在页面在输出类似如下的错误信息 Parse error: parse error, unexpected ‘}’ ,说明模板中出现了无法匹配,或格式错误的逻辑元素,请仔细检查是否有元素不对应,没有结束或嵌套损坏,格式错误的现象,必要时可以恢复原始模板来解决 问题。

    定义变量说明

    <?exit?>

    <!–{eval $i=2}–>

    <!–{if $i==1}–>

    123

    <!–{/if}–>

    复制代码

    {eval $solvelist=$_ENV['question']->list_by_cfield_cvalue_status('',0,2,0,$setting['list_indexnosolve']); }

    <div class="block">

    <div class="title">

    <h3>已解决问题</h3>

    <span><a href="{url category/list/2}">更多>></a></span>

    </div>

    <div class="questionList">

    <div id="solved_topic_panel">

    <ul>

    <!--{loop $solvelist $question}-->

    <li>

    <h6><a href="{$question['url']}"target="_blank">{$question['title']}</a></h6>

    <span>[<a href="{urlcategory/view/$question['cid']}">{$question['category_name']}</a>]</span>

    </li>

    <!--{/loop}-->

    </ul>

    </div>

    </div>

    </div>

    复制代码

    <!–{eval for ($i=1; $i<=5; $i++){ }–>

    <!–{eval echo “Hello World!<br />”;}–>

    <!–{eval}}–>

  • 相关阅读:
    Linux I2C设备驱动编写(一)
    Device Tree常用方法解析
    Linux查看CPU型号及内存频率及其它信息的命令
    编译错误error: invalid storage class
    Mysql技术内幕——表&索引算法和锁
    mysql 锁
    MySQL 索引方式
    通过show status 来优化MySQL数据库
    linux shell 字符串操作(长度,查找,替换)详解
    bash中将字符串split成数组的方法
  • 原文地址:https://www.cnblogs.com/sovf/p/2871601.html
Copyright © 2020-2023  润新知