海盗模板引擎

什么是标签

标签书写格式

通用标签

变量

常量

函数

模板引入

语言包

条件

循环

内容标签

内容标签简介

书写格式

商品列表标签

分类列表标签

商品咨询列表

品牌列表

类型列表

评论列表

文章分类列表

文章列表

banner列表

友情链接

帮助中心

导航列表

广告列表

组合营销列表

购买记录列表

注意事项

温馨提示

海盗模板引擎

海盗云商系统(以下简称海盗)的模板引擎是基于原始PHP的「解释型」模板文件引擎,故无论在模板文件里如何编写标签代码,引擎均会转换为原始PHP语句进行解析。

也就是说,在海盗系统里,是可以直接书写原生PHP语句来执行的。

什么是标签

标签存在的意义即是将原本复杂的原始PHP数据调用语句封装为简单易懂的格式化标签,便于归纳整理及团队协作。比如,让前端工程师直接完成数据的调用而不需知晓其内部的构造及原理。

标签书写格式

海盗标签全部使用 {标签} 的大括号形式书写。也可以用标签HTML语法注释的形式便写,以解决与其它部分模板引擎的冲突问题。以下格式均是标准的海盗标签书写格式:

{标签}

<!--{标签}-->

在「海盗」里,所有的标签书写格式有如下两种类型:

「独立式标签」通常用于直接调用某个变量,而「闭合式标签」则通常用于调用数据列表,条件判断等各种复杂的功能。我们会在下面逐渐讲到。

通用标签

变量

所谓「变量」,即是一个可变的量。通常由后台具体业务的执行结果所决定。它的调用方式为「独立式」标签:{变量名} ,比如:{$site_name} 表示「站点标题」,最终该标签会转换为原始的PHP语法:

<?php echo $site_name;?>

常量

所有「常量」,即是一个固定的值。通常是在系统初始化的同时所定义的,它不能重复定义,也不能被外部值所更改。在海盗里,直接通过{常量名}调用即可。例如:

{CHARSET}

代表系统编码(utf-8)

函数

在海盗中,支持在模板文件里直接调用所有系统全局函数。调用方式为:

{函数名(参数)}

其中,函数名即已封装好的用于各种通用数据或业务的处理。而_参数_则根据具体该函数的定义或要求决定是否传递的值。例如:

{thumb(url,100,100)}

代表调用或生成路径为url的图片的缩略图,其中第一个参数url代表原图路径,后两个参数100代表缩略图的长和宽。

模板引入

模版引入有两种类型:

文件名支持路径,例:common/header

语言包

普通语言包:{lang 变量名} 插件语言包:{lang 插件标识:变量名}

条件

模板支持对动态数据的条件判断,根据不同条件输出最终的数据。

{if 条件}
    输出内容
{/if}

会解析为:

<?php
if(条件) {
 echo '输出内容';
}
?>

如果是带有否则的,那么会:

{if 条件}
    条件输出
{else}
    否则输出
{/if}

转换为:

<?php
if(条件) {
 echo '条件输出';
} else {
 echo '否则输出';
}
{if 条件1}
 条件输出1
{elseif 条件2}
 条件输出2
{else}
 否则输出
{/if}

转换为:

<?php
if(条件1) {
 echo '条件输出1';
} elseif(条件2) {
 echo '条件输出2';
} else {
 echo '否则输出';
}
?>

循环

循环标签通常用于对数组的循环输出,一般在模板中以「列表」的形式体现。比如热门商品。它的基本格式为:

{loop 数组 指针 变量}
 变量
{/loop}

通常情况下「指针」可以留空。系统默认以变量$n存在。

内容标签

内容标签简介

系统的「内容标签」是海盗系统中的核心标签,也是在模板制作中最常见的标签之一。我们必须熟练掌握「内容标签」的知识,才能制作出满足各种需求的个性化模板。

书写格式

{hd:模块名 method="方法名" num="返回条数" where="[附加SQL条件]" order="[排序方式]" return="[返回变量名]" tagfile="[文件名]" cache="[缓存时间]" page="[当前分页]" pagefunc="[分页函数]" urlrule="[分页规则]"}
....
{/hd}

事例中的参数释义如下:

注意,带有[]符号的参数是可忽略的

以下为我们整理的系统中具有代表性的内容标签,未列出的部分请开发人员参考以下内容即可:

商品列表标签

所属模块:goods

标签标识:goods

标签详解

参数 默认值 描述
catid 0 所在分类,默认为全部分类
num 12 调用商品数量
brand_id 0 商品所属品牌ID,0为不限制
statusext empty 商品拓展状态(1:促销;2:热卖;3:新品; 4:推荐)
show_switch empty 是否开启列表页显示重复图片商品,默认不显示重复图片商品,建议在搜索和筛选结果时开启
goods_ids empty 用于传入指定sku_id,以逗号分割的字符串方式
order empty 排序方式
where empty 商品附加条件,传入原生SQL语句
page $page 当前分页(存在此参数则代表标签支持分页)

调用实例

调用 5 件促销商品完整代码:

{hd:goods tagfile="goods" method="lists" num="5" statusext="1"}
    {loop $data $r}
        商品标题:{$r[name]}
    {/loop}
{/hd}

分类列表标签

分类列表用于调用商品分类的标签,通常用于页面的导航条、左侧所有分类等效果。

所属模块:goods

标签标识:category

标签详解

参数 默认值 描述
catid 0 上级分类ID,若存在此值,则代表调用子分类列表
num 12 调用数量
order empty 排序方式
type empty 分类类型(nav:导航;normal:列表;默认:既是导航也是列表)
only 0 若该参数为1,则catid即为指定分类的id,多个可用','分隔

调用实例

调用 10 个顶级分类

{hd:goods tagfile="category" method="lists" num="10"}
{loop $data $r}
    分类名称:{$r[name]}
{/loop}
{/hd}

调用 5个 指定分类

{hd:goods tagfile="category" method="lists" catid="1,2,3,4,5" only="1"}
{loop $data $r}
    分类名称:{$r[name]}
{/loop}
{/hd}

商品咨询列表

所属模块:goods

标签标识:consult

标签详解

参数 默认值 描述
spu_id 0 商品id
sku_id 0 子商品id
mid 0 用户id
num 12 调用数量

调用示例

{hd:goods tagfile="consult" method="lists" spu_id="1" num="8"}
    --
{/hd}

品牌列表

所属模块:goods

标签标识:brand

标签详解

参数 默认值 描述
isrecommend empty 是否推荐品牌;默认全部,0:否 1:是
catid empty 根据商品分类id查找该分类下的品牌
num 20 调用条数
where empty 附件条件;原生SQL查询语句
order empty sort倒序ID倒序

调用实例

{hd:goods tagfile="brand" method="lists" num="10" order="sort asc" catid="35"}
    --
{/hd}

类型列表

所属模块:goods

标签标识:type

标签详解

参数 默认值 描述
method empty 调用类型属性方法:lists,调用商品规格方法:specs
catid empty 商品分类ID查找

可以看出,类型因其特殊性,和其他内容标签调用有所区别。

调用实例

调用类型属性

{hd:goods tagfile="type" method="lists" catid="35"}
    --
{/hd}

调用类型规格

{hd:goods tagfile="type" method="specs" catid="35"}
    --
{/hd}

评论列表

所属模块:comment

标签标识:comment

标签详解

参数 默认值 描述
spu_id 0 商品id
sku_id 0 子商品id
mid 0 用户id
mood empty 评价类别(positive:好评;neutral:中评;negative:差评)
is_shield empty 是否审核(默认全部显示;0:未审核;1:已审核)
num 20 调用条数
where empty 附件条件;原生SQL查询语句
order empty sort倒序id倒序

调用实例

{hd:comment tagfile="comment" method="lists" num="10" order="sort asc" spu_id="3"}
    --
{/hd}

文章分类列表

所属模块:misc

标签详解;category

参数 默认值 描述
id 0 父分类id
display 0 默认全部显示;0:隐藏;1:显示
num 12 调用条数
where empty 附件条件;原生SQL查询语句
order empty 排序方式
page $page 分页位置

调用实例

{hd:misc tagfile="category" parent_id="2"  method="lists" num="10"}
    --
{/hd}

文章列表

所属模块:misc

标签详解:article

参数 默认值 描述
category_id 0 分类id
num 12 调用条数
where empty 附件条件;原生SQL查询语句
order empty 排序方式
page $page 分页位置

调用实例

{hd:misc tagfile="article" category_id="2"  method="lists" num="10"}
    --
{/hd}

banner列表

所属模块:misc

标签详解:focus

参数 默认值 描述
num 12 调用条数
where empty 附件条件;原生SQL查询语句
order empty 排序方式
page $page 分页位置

调用实例

{hd:misc method="lists" tagfile="focus" order="sort asc"}
    --
{/hd}

友情链接

所属模块:misc

标签详解:friendlink

参数 默认值 描述
num 12 调用条数
where empty 附件条件;原生SQL查询语句
order empty 排序方式
page $page 分页位置

调用实例

{hd:misc method="lists" tagfile="friendlink" order="sort asc"}
    --
{/hd}

帮助中心

所属模块:misc

标签详解:help

参数 默认值 描述
num 12 调用条数
where empty 附件条件;原生SQL查询语句
order empty 排序方式
page $page 分页位置

调用实例

{hd:misc method="lists" tagfile="help" order="sort asc"}
    --
{/hd}

导航列表

所属模块:misc

标签详解:navigation

参数 默认值 描述
num 12 调用条数
where empty 附件条件;原生SQL查询语句
order empty 排序方式
page $page 分页位置

调用实例

{hd:misc method="lists" tagfile="navigation" order="sort asc"}
    --
{/hd}

广告列表

所属模块:ads

标签详解:ads

参数 默认值 描述
position 0 位置id
num 12 调用条数
where empty 附件条件;原生SQL查询语句
order empty 排序方式
page $page 分页位置

调用实例

{hd:ads tagfile="ads" method="lists" position="1" num="1"}
    --
{/hd}

组合营销列表

用于展示和某一商品同参加组合营销的所有商品。

所属模块:promotion

标签详解:prom_group

参数 默认值 描述
sku_id 0 商品id
page $page 分页位置

调用实例

{hd:promotion tagfile="prom_group" method="lists" sku_id="336"}
    --
{/hd}

购买记录列表

用于展示某一商品的购买记录。

所属模块:order

标签详解:order

参数 默认值 描述
sid 0 商品id,是sku_id还是spu_id,取决于isspu的值
isspu true 决定是否sid是spu_id,true则为spu_id,false则为sku_id
all true 是否是所有sku的购买记录
order empty 排序方式
page $page 分页位置

调用实例

{hd:order tagfile="order" method="records" sid="1" isspu="true" all="true"}
    --
{/hd}

至此,所有的内置标签介绍完毕。

注意事项

所有的「内容标签」均会返回一个数组。您可以直接通过打印该数据来获取最终的元素集合。并且通过「通用标签」的数组循环loop来实现最终的数据调用。返回数据的的数组变量为$data。例如:

{loop $data $r}
    <li><a href="{$r[link]}">{$r[title]}</a></li>
{/loop}

温馨提示

其实最好的文档说明在系统默认模板里,模板模板中包含了绝大部分的标签实例。

在线咨询

服务时间:9:00 - 18:00

请选择您需要咨询的内容

如果您有以下问题请反馈社区

好的建议或意见

使用过程中遇到的问题

使用过程中遇到的BUG

点击进入社区
400专线 周一至周五9:00-18:00
4008-629-916