[搜]

贴心猫-文档

标签规范

  • 先来个示例:
    • 显示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调用,如:{=$v['title']};
    • 或在字段前加上前缀t_后直接调用字段如:{=$t_did},{=$t_title},{=$t_detail},
    • 在列表循环中,循环下标默认为$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:*)地址打开;
    • 或 登录管理员 后 才可使用。