微擎会生成tpl.php文件,微擎模板机制文档

微擎本质是一套后台管理系统, 因此没有预留风格切换的功能(并且也完全没有这个必要). 系统风格定义于 ./themes/default/ 中. 按照功能点不同定义于各自的子文件夹中. 在进行模块开发的过程中尽量不要改动系统风格, 以方便升级时保证向后兼容.

所有的模板缓存均被解析成php文件存放在 ./data/tpl 中, 以 “模板标示符.tpl.php”形式保存. 页面缓存刷新原理: 当开发者编辑过模板文件之后, 模板解析器会匹配模板html文件与缓存php文件的最后修改时间, 如过模板html文件较新或无缓存文件, 则更新或生成缓存, 不新, 则不采取任何动作. 手动删除此目录的缓存不会影响系统的整体运行, 模板缓存仍然会进行自动生成.

PHP中使用 template() 函数显示已存在模板

在PHP代码中展示模板页请使用 template() 函数, 在开发模块时模块内部应该使用 $this->template() 函数, 这两个函数是用方式完全相同, 只是开发模块时特定模块的模板定义于当前模块文件夹内部(请参阅 "模块开发指南"). 此方法定义如下:mixed function template(string $filename, int $flag = TEMPLATE_DISPLAY)说明: 展示特定模板内容

参数:

$filename 模板名称, 格式为: '模板文件夹/模板名称无后缀', 如: common/header $flag 模板展示方式

$flag含义: TEMPLATE_DISPLAY 导入全局变量, 渲染并直接展示模板内容(默认值)

TEMPLATE_FETCH 导入全局变量, 渲染模板内容, 但不展示模板内容, 而是将其作为返回值获取. 可用于静态化页面.

TEMPLATE_INCLUDEPATH 不导入全局变量, 也不渲染模板内容, 只是将编译后的模板文件路径返回, 返回的模板编译路径可以直接使用 include 嵌入至当前上下文.

示例: 以下三种调用方式效果相同$list = array(); ... // 其他更多上下文数据 template('common/template'); //直接展示模板 $content = template('common/template', TEMPLATE_FETCH); //获取模板渲染出的内容 echo $content; //输出渲染的内容 include template('common/template', TEMPLATE_INCLUDEPATH); //嵌入模板编译路径

微擎模板语法

微擎模板使用模板标记来嵌入变量和实现简单的逻辑语法, 当前支持的模板标记包括以下:变量输出 - {$var}说明: 使用花括号包含的变量将直接输出至页面, 功能等同于<?php echo $var;?>

转义: 一般情况模板引擎能自动识别 javascript 中的花括号和变量输入的花括号. 如果遇到程序不能自动分辨的情况可以强制使用 "{##" 符号来代表 "{", 使用 "##}" 符号来代表 "}".

特殊情况: 变量输出语法同时支持直接输出数组元素或嵌套数组元素, 例如:{$row['name']} {$_W['member']['username']}条件语法 - {if condition}{/if}说明: 使用条件语法能实现等同于if的条件分支判断.

逻辑语句: if后可以跟使用逻辑运算符连接起来的多条逻辑语句, 例如: {if $row['flag'] == '-1' && $row['role'] != 'admin'}被禁用{/if}

else语句: 可以使用 {else} 来扩充条件判断, 例如:

{if $row['role'] == 'admin'} 管理员 {else} 普通用户 {/if}

多条件判断: 可以使用 {else if condition} 来进行多个条件的判断, 例如:

{if $row['role'] == 'founder'} 创始人 {else if $row['role'] == 'admin'} 管理员 {else} 普通用户 {/if}循环语法 - {loop $list $row}说明: 使用循环语法能够遍历某个集合的内容. 示例:

{loop $wechats $wechat}

Name: {$wechat['name']} {/loop}

扩展语法: 可以使用扩展的语法 {$loop $list $key $wechat} 来遍历集合的键名和键值, 例如:{loop $wechats $weid $wechat}

Id: {$key}; Name: {$wechat['name']} {/loop}模板嵌套 - {template $name}说明: 在模板的当前位置嵌入另一个模板, 例如: 使用 {template common/header} 来嵌入标准页头.PHP语法嵌入 - {php statement}说明: 以上定义的模板语法已经能够实现大部分的页面嵌入情况, 如遇到不能满足需要的情况可以使用 PHP 语法嵌入标记, 例如:{php echo date('Y-m-d H:i:s', $row['dateline']);}数据获取标签 - {data module="" func="" return="" item="" limit="" assign=""}{/data}func - 指定获取数据的函数,此函数定义在模块目录下的model.php文件中

module - 指定获取数据的模块。

assign - 指定该标签得到数据后,存入的变量名称。如果为空则存在与func同名的变量中,方便在下方的代码中使用。

item - 指定循环体内的迭代时的变量名。相当于foreach ($foo as $i => $row)中 $row变量。

limit - 指定获取变量时条数。

return - 为true时,获取到数据后直接循环输出,为false时,获取到数据后作为变量返回。默认为false

目前支持的获取数据func{data func="siteslidesearch"} 获取微站幻灯片

说明: 获取出4条幻灯片数据,示例:

{data module="" func="site_slide_search" return="" item="row" limit="4"}

Name: {$row['name']} {/data}

{data func="site_article" cid=$cid return="true" assign="result" iscommend="true" ishot="true"}

说明: 根据当前分类$cid获取文章列表,把数据存放在result变量中。此数组中包含list数据和pager数据,iscommend 表示推荐文章,ishot表示热门文章。此标签可同时使用,也可单个使用。示例:{data module="site" func="site_article" cid=$cid return="true" assign="result"} {loop $result['list'] $row}

{$row['title']} {/loop} {$result['pager']}

{data func="site_category" parentid="0"}

说明:获取当前分类列表,parentid指定获取某个分类的子类。parentid为0是则获取所有的父分类,默认是获取全部分类,示例:

{data module="site" func="site_category"}{$row['name']}{loop $row['children'] $item}{$item['name']}{/loop}{/data}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值