教程07-微擎模板开发概述

模板标签概述

微擎的模板文件本质上就是一个php文件,所以支持直接书写php代码,但是为了增加开发效率和非php人员的使用,微擎系统定了了一套类似于 Smarty 的模板引擎标签。

下面我们通过实例讲解一下微擎中的标签如何使用。

输出变量

{$foo}

输出标签是由一对花括号做为定界符的,不支持输出数组,相对于php中的 echo

示例

<div class="user-head ellipsis">{$_W['fans']['nickname']}</div>
// 对等于 
<div class="user-head ellipsis"><?php echo $_W['fans']['nickname']; ?></div>

判断语句

{if condition}
{elseif condition}
{else}
{/if}

条件选择分支

示例

如果 $do 等于 record 则显示下面的卡券领取记录,否则显示查看卡券

{if $do == 'record'}
<li class="active"><a href="javascript:;">卡券领取记录</a></li>
{else}
<li class="active"><a href="javascript:;">查看卡券</a></li>
{/if}

if 和 elseif 配合使用

{if $dca['status'] == 1}
	<span class="label label-success">未使用</span>
{elseif $dca['status'] == 2}
	<span class="label label-warning">已失效</span>
{elseif $dca['status'] == 3}
	<span class="label label-danger">已核销</span>
{elseif $dca['status'] == 4}
	<span class="label label-default">已删除</span>
{else}
	<span class="label label-default">全部</span>
{/if}

循环语句

{loop $result $key $value}
{/loop}

循环遍历语句,相当于PHP中的

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

}

参数

  • $key 可以使用其它名称,将存储数组中每一成员的键值
  • $value 可以使用其它名称,将存储数组中每一成员的值

示例

循环一个数组用 loop 标签,与php中的 foreach 函数类似,第一个参数为数组的索引,第二个参数为数组第一项的值,只要标签成对匹配,模板中的标签是可以嵌套使用的。

{loop $list $index $item}
<tr>
	<td>{$index}(显示数组的索引):</td>
	<td>{$item['user']['nickname']}</td>
	<td>
	{if $item['follow'] == '1'}
		<span class="label label-success">已关注 </span> 
	{elseif $item['unfollowtime'] <> '0'}
		<span class="label label-warning" >取消关注 </span>
	{else}
		<span class="label label-danger">未关注 </span>
	{/if}
	</td>
</tr>
{/loop}

php语句

{php expression}

运行一个PHP原生代码,不支持多行php语句

参数

  • expression 符合PHP语法的表达式

示例

由于某些时候需要使用一些php来输出内容,比如格式化时间戳为日期时,此写法并不支持多行php语句,例如:

<span class="help-block">{ php echo date('Y-m-d H:i:s', $row['followtime'])}</span>

或者

<?php
echo 1;
?>

引用模板

{template '$templatename'}

引用一个模板文件

参数

  • $templatename 模板名称或是路径+模板名称

示例

在模板中如果需要引用其它模板文件可以使用以下的方法:

//模块中的使用方法,不需要添加目录信息
{template 'header'}

//系统的模板引用的方法,需要添加目录信息
{template 'common/header-base'}

创建URL

{url 'controller/action/do', (array)querystring}

创建一个微擎URL

参数

  • controller 控制器名称,URL中的 c= 值
  • action URL中的a=值
  • do URL中的do=值
  • querystring URL中后面的querystring参数

示例

定义URL时,与在php文件中的创建方法一样,具体使用如下:

<a href="{url 'extension/service/display'}" class="tile img-rounded"><i class="fa fa-glass"></i><span>常用服务</span></a>
<a href="{url 'home/welcome/ext' array('m' => $module['name'])}">模块 - {$module['title']}</a>

此标签并没有提供模块 $this→createMobileUrl('xx') 函数,在模块中的模板中请按以下方法创建:

echo $this->createMobileUrl('order')}

转义附件URL

{media imageurl}

转换一个图片地址为绝对地址

参数

  • imageurl 图片地址,可以是相对也可以绝对

示例

微擎系统支持远程附件,如果你有用到图片或是附件请转义一下地址,具体使用如下:

<i style="background:url({media $nav['icon']}) no-repeat;"></i>

输出花括号

{##string##}

示例

因为模板标签定界符是一对花括号,所以当你想输出一对花括号本身时可以使用以下方法:

{##$order##}

此时花括号和变量不会被转义。

模板数据调用

{data func="site_navs" index="" item="" assign="" return="true" limit="10" module="we7_demo"}
//循环体
{/data}

利用模板标签调用一些特定的数据

参数

名称说明
func调用标签的功能,也就是需要获取什么数据
item默认为row,使用:$row。指定循环体中数组值的变量,在循环体中可以过用此变量输出值
index默认为iteration,使用:$row[‘iteration’]。指定循环体中的索引参数,如果指定过item参数,则{item}[’{index}’]
assign, return默认为false,这两个标签通常共同使用,指定是否直接返回值,还是直接循环输出,如果return为true时,则会直接把内容赋值给assign设置的参数中
limit默认为10,指定获取数据的条数
module如果模块中有扩展标签 func 则通过此参数传递模块名称

调用微站导航

获取当前微站的导航

{data func="site_navs" item="row"}
	{$row['html']}
{/data}

获取当前微站第二个位置的导航

{data func="site_navs" section="1" item="row"}
	第$row['iteration']个:{$row['html']}
{/data}

调用幻灯片

{data func="site_slide_search" item="row" limit="4"}  
	<li>Name: {$row['thumb']}</li>
{/data}

调用文章列表

{data func="site_article" cid=$cid return="true" assign="result"}
{loop $result['list'] $row}
<li>
	<div class="info">
		<h3>{$row['title']}</h3>
		<p class="text">{$row['description']}</p>
	</div>
	<div class="pic">
		<img src="{php echo tomedia($row['thumb'])}">
	</div>
</li>
{/loop}

调用文章评论

{data func="site_article_comment" article_id="文章id" item="row" return="true" assign="result"}
{loop $result['list'] $comment}
<div class="message-list">
	<div content="message-item">
		<div class="message-content">
			<img src="_ echo $comment['avatar']}" alt="" class="logo">
			<div class="message-item-content">
				<p class="name">_ echo $comment['username']}</p>
				<p class="content">
					_ echo $comment['content']}
				</p>
				<p class="time">
					_ echo echo date('Y-m-d H:i:s', $comment['createtime']);}
				</p>
			</div>
		</div>
		{loop $comment['son_comment'] $son_comment}
		<div class="reply-list">
			<div class="reply-item">
				<div class="head">
					作者回复
				</div>
				<p class="content">
					_ echo $comment['content']}
				</p>
				<p class="time">
					_ echo date('Y-m-d H:i:s', $son_comment['createtime']);}
				</p>
			</div>
		</div>
		{/loop}
	</div>
</div>
{/loop}
{$result['pager']}

注意:上面的只是伪代码,请不要复制粘贴,用模板的规则自己渲染即可
如果需要用户留言功能,请跳转至下面的页面

murl('site/site/comment', array('article_id' => $id))

调用分类列表

<div class="category">
	{data func="site_category" parentid="$cid"}
	<a href="{$row['linkurl']}">{$row['name']}</a>
	{/data}
</div>

调用快捷菜单

{data func="site_quickmenu"}{/data}

模板中的一些常用变量

模板中提供了一些占位的变量,开发时根据需要可以在代码中定义这些变量,下面将说明有哪些变量

页面标题

$_W['page']['title'] = '定义此变量将会改变页面标题栏显示的内容';

微站名称

$_W['page']['sitename'] = '微站名称'; // 不设置则默认为公众号名称

微信分享内容

<?php 
$_share = array(
    'title'   => ?,
    'link'    => ?,
    'imgUrl'  => ?,
    'content' => ?
);

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字化转型高高老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值