标签规范
- 先来个示例:
- 显示5条新闻
{tag:ntop=[List][modid,news][limit,5]}
<li>
id:{=$v['did']}, 标题:{=$t_title},
行下标:{=$i_v}, 行数据:<?php dump($v); ?></li>
{/tag:ntop}
- 标签规范
- 代码格式:
{tag:tagName=[tagType,rowArr][attr1,val1][attr2,val2][...]}
<div>
里面放html代码</div>
{/tag:tagName}
- 格式说明
tagName
为自定义标签名,2~18个字母数字下划线组成的字符,以字母开头;
同一页最好不要有相同的,否则少部分情况下可能有冲突;
- [tagType,rowArr] 为标签类别和行内数组,紧接在
tagName=
之后,
标签类别tagType
可以是 List(列表), Page(分页), One(单行), Type(类别列表), Push(推送), Free(自由调用);
行内数组rowArr
默认为v
可省略,可自定义如[List,v2],[Page,p];
- [attr1,val1] 为一组标签属性,可以有多组属性,且无顺序之分;
- 标签内变量
- 在标签内部,整个列表数组为
$T_tagName
,如得到列表的记录数可用<?=count($T_tagName)?>,
其中tagName
是自定义的标签名;
- 标签中默认行内数组为
$v
,假设里面有字段did
,title
,detail
;
调用如:{=$v['title']},设置行内数组为v2,p等,则调用就用{=$v2['title']},{=$p['title']};
- 或在字段前加上前缀
t_
后直接调用字段如:{=$t_did},{=$t_title},{=$t_detail};
- 多标签嵌套,$t_前缀会覆盖,请自定义行内数组调用;
- 在列表循环中,循环下标默认为
$i_v
,其中v
是可自定义的行内数组变量名;
下面一一介绍各类标签,和详细属性。
4大标签
List:列表标签
- 用于调用 [文档/资讯] | [互动/评论] | [用户/会员] [广告/连接] 列表
- Demo代码
{tag:list1=[List][modid,news][limit,3]}
{title($t_title,12,$v)}
{/tag:list1}
- 属性列表
- 属性:
modid
为后台配置的模型ID,在特定模板中,可用$this->mod
表示当前默认模型,
如:[modid,news]
, [modid,person]
, [modid,$this->mod]
。
- 属性:
join
为【文档/资讯】中附加详情内容,其它模型无效
如:[join,detail]
。
- 属性:
stype
为【文档/资讯/广告】中的栏目 或 【用户/会员】中的等级,
如:[stype,cvip]
, [stype,nsys]
,
如果为:[stype]
不设置具体值,则从url中取值如:stype=nsys
。
- 属性:
show
显示开关,默认不设置,值显示有效(审核)的资料即:[show,1],
如需显示隐藏的请设置[show,0]
,
如需显示所有资料请设置[show,all]。
- 属性:
pid
关联pid,假设后台设置:[nrem]新闻评论 关联模型是 [news]新闻动态;
如:[pid,2018-88-9988]
, 表示新闻id=2018-88-9988
的评论,或用变量[pid,$did]
。
- 属性:
inids
主键id列表,文章详情页,有$rel_doc
变量来自关联id字段
如:[inids,$rel_doc]
则找出关联的文章。
- 属性:
keywd
关键字条件,
如:[keywd]
,参数值来自url中keywd=xxx
,然后like比较的结果;
如:[keywd,mycat]
,查询like %mycat%
的结果;
适合:【文档/资讯】/【用户/会员】/【分类/组系】数据调用;【用户/会员】中比较字段是mname
,其他模型比较字段是title
;
- 属性:
xxx(field)
字段条件,拼接后台定义的字段条件:格式为[字段名,值]
如:[brand]
,[hinfo]
,省略值则从url中取如:brand=huawei
;
如:[hinfo,pindao+home+zhuanti,in]
,hinfo取列表中的值之一;
- 属性:
where
条件子句,设置值为自定义sql的where子句,
如:[keywd,$wstr]
,其中$wstr
为:<?php $wstr="pid='2004-33-9999' AND xxx='yyy'"
; ?>。
- 属性:
order
排序,
排序字段:默认不设置时,【用户/会员】是按添加时间;其它模型默认是主键;
排序方式:默认是倒序,或从url中odesc=0
得到,或指定方式如[order,m.did,1]
,[order,m.did,0]
;
提示:【分类/组系】不使用排序;默认表别名为m
(main-主表)。
- 属性:
limit
,分页(列表)大小,如:[limit,8]
。
- 属性:
offset
,偏移量,如:[offset,2]
。
- 属性:
cache
缓存,默认不配置,可以设置数字,单位是分钟;
如:[cache,4h]
-4小时,[cache,7d]
-7天,[cache,30]
-30分钟。
- 注意:[广告/连接]另有调用方式;(后续改进)点击属性可附加到演示标签上。
One:单条数据标签
- 用于调用 [文档/资讯] | [互动/评论] | [用户/会员] 一行数据
- Demo代码
<
?php $whr="m.did='2015-9g-n7s1'"; ?>
{tag:o1=[One][modid,cargo][join,detail][where,$whr]}
{=$t_title} --- {=$t_detail}
{/tag:o1}
- 属性列表
- 属性:
modid
为后台配置的模型ID,在特定模板中,可用$this->mod
表示当前默认模型,
如:[modid,news]
, [modid,person]
, [modid,$this->mod]
。
- 属性:
join
为【文档/资讯】中附加详情内容,其它模型无效,
如:[join,detail]
。
- 属性:
inids
主键id列表
如:[inids,$did]
则找指定id=$did的文章。
- 属性:
where
条件子句,设置值为自定义sql的where子句,
如:[keywd,$wstr]
,其中$wstr
为:<?php $wstr="did='2004-33-9999'"
; ?>。
- 注意:因为详情页,系统默认把当前行资料行已经解析出来了,所以此标签用的不是很多,其他属性参考List标签。
Type:类别列表标签
- [分类/组系] 列表
- Demo代码
{tag:t1=[Type][modid,indep]}
{=$t_kid},{=$t_title}
{/tag:t1}
- 属性列表
- 属性:
modid
为后台配置的模型ID,在Type标签中,只能使用[分类/组系]相关模型,
如:[modid,brand]
-品牌, [modid,ftype]
-行业, [modid,local]
-镇区。
- 属性:
idfix
id层级关系,Type标签特有属性,
如[idfix,all]
,所有分类;
如[idfix,top]
,所有顶级分类;
如[idfix,sun:p1012]
,p1012的子分类(不含子分类下的分类);
如[idfix,sall:p1012]
,p1012的子分类(含子分类下的分类);
- 提示:如果分类有两层或以上,需要设置此
idfix
属性,其他情况通常省略。
- 效果与源码
- List,Type,One 标签效果与源码
- Demo效果, Demo代码
- 提示:查看Demo效果时,必要时请
查看源代码
对比
Page:分页标签
- 用于调用 [文档/资讯] | [互动/评论] | [用户/会员] [广告/连接] 分页
- Demo代码
{tag:dlist=[Page][modid,news][limit,3]}
<dl class="news-list">
<div>列表头:共{=$_cbase['page']['pcnt']}页/{=$_cbase['page']['prec']}行资料</div>
{:row}
<dt><a href='{surl($this->mod.".$t_did")}'>{title($t_title,60,$v)}</dt>
<dd><i class="atype">{sopt($t_catid,$this->mod,0)}</i>
<i class="click">{=$t_click}次
<i class="atime">{stime($t_atime,min)}</i></dd>
{if (($i_v+1)%5==0) } <hr> {/if}
{/row}
</dl>
<div class="clear"></div>
{php echo $_cbase['page']['bar']; }
{/tag:dlist}
- 属性与说明
- Page的所有属性,与List相同,请参考List标签属性;
- 分页标签,多了一个分页条为:
$_cbase['page']['bar'];
;
- List,Page标签,默认是吧标签里的所有代码循环,标记
{:row}
,{/row}
可自定义循环体;
- 本标签综合了一些调用实例,如标题截取,类别显示,时间显示,使用$i_v判断每5行一个分割线等。
- 提示:同一页不能有两个分页标签
- 效果与源码
- Page 标签效果与源码
- 分页效果, 分页代码
- 提示:查看Demo效果时,必要时请
查看源代码
对比
标签嵌套
- 需求:每个新闻类别下显示3条新闻列表:
- Demo代码
{tag:tps=[Type,u][modid,news]}
<h3>{=$u['kid']} / {=$u['title']}</h3>
{tag:dlist=[List,v][modid,news][stype,$t_kid][limit,3]}
{=$v['did']}, {=$t_did}, {=$t_title}<br>
{/tag:dlist}
{/tag:tps}
- 嵌套标签中,请设置不同标签名,上述为:
tps
,dlist
- 嵌套调用中,为避免当前行数组名变量冲突,请指定行内数组名,上述为:
u
,v
- Demo代码效果
其它标签
Free:自由数据标签
- 作用
- 用于第三方数据,跨库调用
- 以下假设调用第三方数据库(好房通房源数据)
- 设置外部数据源连接信息:
imhaoft
如下:
- 外部数据源设置
- 文件:/root/cfgs/boot/cfg_db.php
- demo配置(在文件尾部添加类似代码)
$_cfgs['imhaoft'] = $_cfgs;
//$_cfgs['imhaoft']['db_host'] = 'localhost';
$_cfgs['imhaoft']['db_name'] = 'imhaoft'; // 数据库名(pdo连接不使用)
$_cfgs['imhaoft']['db_prefix'] = 'hft_';
$_cfgs['imhaoft']['db_suffix'] = '';
- Free:调用
lease
(出租)信息
- Demo代码:
{tag:dlist4=[Free][dbkey,imhaoft][modid,lease][pgbar,1][order,LEASE_ID][limit,3]}
{=$t_LEASE_SUBJECT} <br>
{/tag:dlist4}
- 出租表名:lease,里面的字段与好房通api一致
- 属性与说明
- 属性:
dbkey
外部数据源,配置见上
如:[dbkey,imhaoft]
,[dbkey,phpcms]
。
- 属性:
modid
第三方数据模型(库)名称
如:出租:[modid,lease]
,出售:[modid,sale]
。
- 属性:
pgbar
是否分页
如:默认不配置,部分页,如需分页配置为[pgbar,1]
。
- 属性:
where
条件子句,设置值为自定义sql的where子句,
如:[keywd,$wstr]
,其中$wstr
为:<?php $wstr="xxx='yyy'"
; ?>。
- 属性:
order
排序,
如[order,m.LEASE_ID]
,[order,m.SALE_ID,0]
;
- 属性:
limit
,分页(列表)大小,如:[limit,8]
。
- 属性:
offset
,偏移量,如:[offset,2]
。
Push:数据推送标签
- 推送作用
- Push:数据推送标签,用于很自由的设置一组链接,完全自定义内容!
- 用法很简单,倒是解析下为什么出来一个这么样的标签?!
- 源于现实
- 如果一个新闻列表,有1w条新闻,推荐5条显示,用标签方便的做出来了;
- 有一天,这5条要自定义排序,order一下,但可能效率下降了很多,如果资料多了,order位置也够你设置的;
- 再有一天,公司出了一款重量级产品,有个专题介绍,不是新闻,boss要求第一条新闻位置,显示这个专题链接,
怎么有这个需求,不合理吧?但这是boss的要求...,你就临时处理一下模板,if,else,html...写死了一个链接;
- 又有一天,有个很重要的客户合作,要第二条新闻位置显示客户的一个链接???
- 估计我也疯了,宁愿辞职!
- 但是,在辞职之前,可尝试用这个标签搞定?!
- 后台设置
- 入口:后台 >> 广告 >> 手动推送
- 根据需要,增加一条资料,注意可修改id,以方便调用;
- 要哪些字段,由cfgs配置json数组,非常自由;
- 注意填写:Max/Page:为可设置的资料的行数。
- 资料调用
- Demo代码:
<?php
$res=tagPush::gets('cargo-push8,news-push2,hpic-push5');
dump($res['cargo-push8']);
dump($res['news-push2']);
?>
- 资料管理
- 后台管理,可选取已有资料,也可自由填写数据;
- 可连接到前台,可视化管理;
标签助手
- 此助手可界面化diy生成标签,大力推荐使用!
- 提示:
- 需要本地(localhost, 10.*, 127.*, 192.*, ::1, FE80:*, FEC0:*)地址打开;
- 或 登录管理员 后 才可使用。