pbootcms开发说明,pbootcms开发手册,pbootcms标签语法,.pbootcms二次开发

迅恒数据中心
系统后台默认访问路径:http://域名/admin.php   账号:admin   密码:123456
------------------------------
公共标签
1、模板文件嵌套引用
{include file=***.html}
使用说明:
可以嵌套使用,如:index.html 嵌套一个head.html,同时head.html中嵌套comm.html
支持使用子目录,如:{include file=comm/***.html}
2、时间格式化标签
style=*
如:内容列表时间格式化[list:date style=Y-m-d]、内容详情页时间格式化{content:date style=Y-m-d}
使用说明:
时间格式化标签和PHP时间格式化语法一致,分别用不同字母代替,中间可以穿插任意字符,如:Y-m-d、Y/m/d、Y年m月d日等等
注意:Y代表完整年份,y代表简化年份,m代表月份,d代表日,H代表小时,i代表分,s代表秒,如完整时间:style='Y-m-d H:i:s',更多请参考PHP时间格式化语法 
3、HTML去除标签
drophtml=1
如:内容列表内容[list:content drophtml=1]、内容详情页内容{content:content drophtml=1}
使用说明:
一般在首页等特殊位置需要调取正文一段纯文本时使用,这时一般会配合下面的内容截取标签一起使用
4、内容截取标签
长度截取使用len=* 或 lencn=* ,使用第二个将避免中英文长度不统一问题,一个英文字符算半个字
内容截取时可使用more='*'设置省略号内容,设置more=''则不显示省略号
如:内容列表标题截取[list:title len=10]
substr=x,y 截取一段
substr截取字符串长度,传递两个数字,第一个为起始位置,第二个为截取长度,如只有一个数字则截取此数字起后面全部
使用说明:
使用内容截取时要注意如果是html内容需要先去除html再截取,否则可能导致html错位,
如:[list:content drophtml=1 len=50]
5、其它格式化标签
dropblank=1 ,去除空白字符,如换行符、制表符等
decode=1 解码数据html字符,如果等于0.则不解码(包括源码已经解码的),此标签一般不使用
decimal=* 小数点位数
unit=* 容量单位,可以是kb,mb,gb,tb,pb,eb
operate=** (V2.0.4新增)数字运算(支持+-*/%),如访问量加1000[list:visits operate=+1000] 、序号求余[list:i operate=%2]
lfield="a,b" (V2.0.5新增)限制列表数据查询字段,提高大数据性能,如lfield="title,content"
mark=1 (V2.0.5新增)对搜索结果关键字进行标红,如:[search:title mark=1];
6、自定义标签
{label:***}
使用说明:
在后台”全局配置>定制标签“中定义,前台使用对应名字进行调用即可
7、面包屑标签
{pboot:position}
参数说明:
separator=* 分隔符,非必填,默认为>>
separatoricon=* 分割图标,非必填,如使用图标字体:separatoricon='fa fa-angle-double-right'
indextext=* 首页文本,非必填,默认为"首页"
indexicon=* 首页图标,非必填,如使用图标字体:indexicon='fa fa-home'
8、当前网址
{pboot:httpurl}
使用说明:
自适应获取当前访问网址,主要用于需要使用网站路径前缀的情况,如输出:https://www.pbootcms.com
9、当前页面
{pboot:pageurl}
使用说明:
自适应获取当前访问页面完整地址
10、二维码生成标签
{pboot:qrcode string=***}
使用说明:
用于生成对应文本的二维码图片
可用于产品列表页或详情页为每个产品生成二维码 :
{pboot:qrcode string={pboot:httpurl}{content:link}}或{pboot:qrcode string={pboot:pageurl}
11、程序运行时间
{pboot:runtime} 
使用说明:
用于输出页面运行时间/缓存时间,使用时请将反斜杠去掉。
12、留言验证码开关状态
{pboot:checkcodestatus}
使用说明:
用于判断留言验证码是否开启状态,方便页面控制验证码图标的显示。
13、站点地图
http://www.xxx.com/sitemap
http://www.xxx.com/sitemap.xml
http://www.xxx.com/sitemap.txt
使用说明:
系统使用动态站点地图,不需要生成,访问地址即为实时地图,输出格式为xml 或 txt,当然你也可以打开后另存为一个地图文件。
使用以上地址需要已经开启伪静态,否则域名后带问号才可以访问。
14、图片缩放及裁剪(v1.3.5+)
图片缩放及裁剪总共四个参数:
参数:width=* height=* maxwidth=*  maxheight=*
使用方式,如:[list:ico width=100]
使用说明:
四个参数可以组合使用,此处会生成改变了图片大小的缓存图片,缓存图片是裁切过后的图片,但原上传的图片不变。
如果不想改变大小及裁切图片,只是想缩放显示,那么请使用CSS进行控制即可。
15、公司信息标签==对应后台的“基础内容>公司信息”
{pboot:companyname}    公司名称
{pboot:companyaddress}    公司地址
{pboot:companypostcode}    邮政编码
{pboot:companycontact}    联系人
{pboot:companymobile}    联系手机
{pboot:companyphone}    联系电话
{pboot:companyfax}    传真号码
{pboot:companyemail}    联系邮箱
{pboot:companyqq}    QQ号码
{pboot:companyweixin}    微信图标
{pboot:companyblicense}    营业执照号
{pboot:companyother}    其它信息
16、站点信息标签==对应后台的“基础内容>站点信息”
{pboot:siteindex}    站点入口地址,一般用于站内链接跳转设置地址前置,实现自适应URL模式
{pboot:sitepath}    站点路径,根目录时值为空,为适应部署到二级目录时建议链接前面带上
{pboot:sitelanguage}    站点语言
{pboot:sitetitle}    站点标题
{pboot:sitesubtitle}    站点副标题
{pboot:sitedomain}    站点域名
{pboot:sitelogo}    站点logo
{pboot:sitekeywords}    站点关键字
{pboot:sitedescription}    站点描述
{pboot:siteicp}    站点备案信息
{pboot:sitetplpath}    站点模板路径
{pboot:sitestatistical}    站点统计
{pboot:sitecopyright}    站点版权
{pboot:pagetitle}  根据不同页面自动显示标题
{pboot:pagekeywords} 根据不同页面自动显示关键字
{pboot:pagedescription}  根据不同页面自动显示描述
17、导航菜单列表标签==用于调导航菜单栏目列表,对应后台的“基础内容>内容栏目”
17.1、导航菜单列表
{pboot:nav}
<a href="[nav:link]">[nav:name]</a>
{/pboot:nav}
控制参数:
num=* 数量,非必填,用于控制输出的数量
parent=* 父菜单编码,用于输出子栏目,默认从一级菜单开始输出,(V3.1.2+)支持传递多个编码
parent={sort:pcode} 可用于输出当前栏目的同级菜单
parent={sort:scode} 可用于输出当前栏目的子菜单
parent={sort:tcode} 可用于输出当前栏目顶级菜单的子菜单
scode=1,2,3  用于控制输出栏目范围(V3.1.2+)
要注意parent和scode的区别,一个是输出子栏目,一个控制范围
17.2、可使用的列表标签
[nav:n]    序号,从0开始
[nav:i]    序号,从1开始
[nav:pcode]    父栏目编码
[nav:scode]    当前栏目编码
[nav:name]    栏目名称
[nav:subname]    栏目副名称
[nav:link]    栏目链接
[nav:type]    栏目类型,1单页、2列表
[nav:outlink]    后台设置的跳转链接
[nav:listtpl]    列表页模板
[nav:contenttpl]    详情页模板
[nav:ico]    栏目缩略图
[nav:pic]    栏目大图
[nav:keywords]    栏目关键字
[nav:description]    栏目描述
[nav:soncount]    当前栏目子栏目的数量,无子栏目时为0
[nav:rows]    输出栏目下内容数量(V1.3+)
[nav:def1]    栏目描述1(V3.0.6+)
[nav:def2]    栏目描述2(V3.0.6+)
[nav:def3]    栏目描述3(V3.0.6+)
17.3、常见使用示例
高亮菜单
使用判断语句:{pboot:if('[nav:scode]'=='{sort:tcode}')}class="active"{/pboot:if}
首页特殊用法:{pboot:if(0=='{sort:scode}')}class="active"{/pboot:if}     
菜单嵌套
二级嵌套
{pboot:nav}                   
  <a href= "[nav:link]">[nav:name]</a>
  {pboot:2nav parent=[nav:scode]}
    <a href= "[2nav:link]">[2nav:name]</a>
  {/pboot:2nav}
{/pboot:nav}
三级嵌套
{pboot:nav}                   
  <a href= "[nav:link]">[nav:name]</a>
  {pboot:2nav parent=[nav:scode]}
    <a href= "[2nav:link]">[2nav:name]</a>
    {pboot:3nav parent=[2nav:scode]}
      <a href= "[3nav:link]">[3nav:name]</a>
    {/pboot:3nav}
  {/pboot:2nav}
{/pboot:nav}
如果有更多级别,以此类推,使用数字依层级套用,理论上不限级调用
18、当前栏目标签
{sort:tcode}    当前栏目的顶级栏目编码
{sort:topname}    当前栏目的顶级栏目名称
{sort:toplink}    当前栏目的顶级栏目链接
{sort:pcode}    当前栏目的父栏目编码
{sort:parentname}    当前栏目的父栏目名称
{sort:parentlink}    当前栏目的父栏目链接
{sort:scode}    当前栏目编码
{sort:name}    栏目名称
{sort:subname}    栏目副名称
{sort:link}    栏目链接
{sort:type}    栏目类型,1单页、2列表
{sort:outlink}    后台设置的跳转链接
{sort:listtpl}    列表页模板
{sort:contenttpl}    详情页模板
{sort:ico}    栏目缩略图
{sort:pic}    栏目大图
{sort:title}    栏目标题(V1.3+)
{sort:keywords}    栏目关键字
{sort:description}    栏目描述
{sort:def1}    栏目描述1(V3.0.6+)
{sort:def2}    栏目描述2(V3.0.6+)
{sort:def3}    栏目描述3(V3.0.6+)
19、指定栏目标签
适用范围:全站任意地方均可使用
标签作用:用于调导航菜单栏目列表,对应后台的“基础内容>内容栏目”
19.1、指定栏目列表
{pboot:sort scode=*}
<a href= "[sort:link]">[sort:name]</a>
{/pboot:sort}
控制参数:
scode=*  栏目编码,必填,用于控制输出的栏目,可以同时输出多个(V1.1.6+),使用逗号隔开即可,如:1,2,3
scode={sort:pcode} 可用于输出当前栏目父菜单的信息
scode={sort:scode} 可用于输出当前栏目的信息
scode={sort:tcode} 可用于输出当前栏目顶级菜单的信息
19.2、可使用的列表标签
[sort:n]    序号,从0开始
[sort:i]    序号,从1开始
[sort:pcode]    父栏目编码
[sort:parentname]    父栏目名称
[sort:scode]    当前栏目编码
[sort:name]    栏目名称
[sort:subname]    栏目副名称
[sort:link]    栏目链接
[sort:type]    栏目类型,1单页、2列表
[sort:outlink]    后台设置的跳转链接
[sort:listtpl]    列表页模板
[sort:contenttpl]    详情页模板
[sort:ico]    栏目缩略图
[sort:pic]    栏目大图
[sort:title]    栏目标题(V1.3+)
[sort:keywords]    栏目关键字
[sort:description]    栏目描述
[sort:rows]    栏目下内容数量(V1.3+)
[sort:toprows]    顶级栏目下内容数量(V1.3+)
[sort:parentrows]    父栏目下内容数量(V1.3+)
[sort:def1]    栏目描述1(V3.0.6+)
[sort:def2]    栏目描述2(V3.0.6+)
[sort:def3]    栏目描述3(V3.0.6+)
20、内容列表标签
内容列表标签
适用范围:指定栏目编码时全站可用,适用当前列表
标签作用:用于调取指定栏目的内容列表或自动当前列表
20.1、当前栏目内容列表
{pboot:list}
<a href= "[list:link]">[list:title]</a>
{/pboot:list}
只能在列表页面使用,带分页,同一个页面只能使用一次,否则:老版本会出现分页冲突,新版会显示一样的内容。
V1.2.2版本开始order排序进行调整,默认情况下置顶、推荐、头条具有优先显示,包括使用date、sorting、visits、likes、oppose时,那么如果要想按照自己的设置来可以使用自定义模式
可以自己任意组合:如order='date desc,id desc' 此时意味着将按照时间倒序,然后添加顺序倒序。如order='sorting desc,id desc' 将先按照后台排序,然后按照id倒序。更多情况自己参照例子定义即可。      
控制参数:
num=*  每页数量,非必填,用于控制分页大小
order=*   排序方式,非必填,用于输出内容的排序方式,可选:date、sorting、istop、isrecommend、isheadline、visits、likes、oppose、等字段,其中sorting为按后台填写的排序,122版本开始支持自定义模式,
如:order='date desc,id desc' 、order='sorting desc,id desc',(V1.3.7+)还支持random随机排序
filter=*|x,y 数据过滤,非必填,用于对列表内容进行过滤筛选,如:filter=title|ASP,PHP 只显示标题含有ASP和PHP的内容,如果需要只显示推荐
可使用如下过滤参数: filter=isrecommend|1 (V1.2.0+版本用下面的方式更好)
isico=*、ispics=*、istop=*、isrecommend=*、isheadline=* 用于对数据进行特殊筛选,可选值1和0,非必填,比如只调取推荐内容:isrecommend=1
tags=x,y tags方式数据过滤,非必填,用于对列表内容进行过滤筛选,
如:tags='ASP,PHP',则为含有asp或php标签的内容,那么可以用 tags={content:tags}来调用当前文章的相关文章
start=* 起始数据(V1.3.2+),非必填,用于需要从第几条开始
20.2、指定栏目内容列表
{pboot:list scode=*}
<a href= "[list:link]">[list:title]</a>
{/pboot:list}
可以全站使用,多个栏目编码使用逗号隔开,如果使用星号,意味全部栏目。
指定栏目内容列表默认不分页,当然你还是可以通过page参数控制强制分页,但要注意不可在同一页面使用多个带分页的列表。
如果要使用本循环标签调用当前内容列表,可以使用scode={sort:scode},同时也避免了同一个页面多次调用当前栏目内容时分页冲突问题。    
控制参数:
scode=* 栏目编码,必填,用于指定需要调取的栏目编码,读取的内容会同时包含该栏目下子菜单的内容,支持多个栏目如:1,2,3
page=* 是否分页,非必填,用于列表是否执行分页,可设置1或0,本功能适合首页分页等场景
start=* 起始数据(V1.3.2+),非必填,用于需要从第几条开始
其余控制参数同上面当前栏目内容列表
20.3、可使用的列表标签
[list:n]    计数0开始
[list:i]    计数1开始
[list:id]    编号
[list:scode]    栏目编码
[list:subscode]    副栏目编码
[list:sortname]    栏目名称
[list:subsortname]    副栏目名称
[list:sortlink]    栏目链接
[list:subsortlink]    副栏目链接
[list:title]    标题
[list:titlecolor]    标题颜色
[list:subtitle]    副标题
[list:tags]    直接输出tags
[list:author]    作者
[list:source]    来源
[list:link]    链接
[list:outlink]    外部链接
[list:date]    发布日期
[list:ico]    缩略图,不存在时自动调用文章第一张图,[list:isico]可用于判断,返回1或0
[list:pics]    多图,V2.0.2新增[list:ispics]可用于判断,返回1或0
[list:content]    内容
[list:enclosure]    附件
[list:enclosuresize]    附件大小
[list:keywords]    关键词
[list:description]    描述
[list:istop]    是否置顶
[list:isrecommend]    是否推荐
[list:isheadline]    是否头条
[list:visits]    访问数量
[list:likes]    点赞数量
[list:oppose]    反对数量
[list:likeslink]    点赞链接
[list:opposelink]    反对链接
[list:ext_***]    调取扩展字段内容
21、分页条标签
适用范围:分页条标签适用所有执行了分页的页面
标签作用:用于输出分页代码
21.1、分页条标签
{page:bar}    系统内置的完整分页条
{page:current}    当前页码
{page:count}    总页数
{page:rows}    总数据行数
{page:index}    首页链接
{page:pre}    前一页链接
{page:next}    下一页链接
{page:last}    尾页链接
{page:status}    分页状态信息
{page:numbar}    数字条,数字带class名称为page-num,当前的同时还带page-num-current
{page:selectbar}    下拉选择条
21.2、分页条自带的HTML样式class名称
状态:page-status
首页:page-index
上一页:page-pre
下一页:page-next
尾页:page-last
数字条:page-numbar ,数字条下面的数字:page-num ,如果是当前页,那么该数字还同时带有:page-num-current
下拉条:page-select (默认条已经不显示)
如果使用系统完整分页条,则以上样式名称在输出的HTML代码中都带,你可以直接使用对应名称在自己的css中定义具体样式即可;
如果使用自定义方式,那么就按照自己写的html代码来定义,但是数字条下面的page-num 、page-num-current依然有效。
22、内容详情页标签
{content:id}    编号
{content:scode}    栏目编码
{content:subscode}    副栏目编码
{content:sortname}    栏目名称
{content:subsortname}    副栏目名称
{content:sortlink}    栏目链接
{content:subsortlink}    副栏目链接
{content:title}    标题
{content:titlecolor}    标题颜色
{content:subtitle}    副标题
{content:author}    作者
{content:source}    来源
{content:link}    链接
{content:outlink}    外部链接
{content:date}    发布日期
{content:ico}    缩略图,不存在时自动调用文章第一张图,{content:isico}可用于判断,返回1或0
{content:pics}    多图,V2.0.2+新增{content:ispics}可用于判断,返回1或0
{content:content}    内容
{content:tags}    直接输出tags
{content:enclosure}    附件
{content:enclosuresize}    附件大小
{content:keywords}    关键词
{content:description}    描述
{content:istop}    是否置顶
{content:isrecommend}    是否推荐
{content:isheadline}    是否头条
{content:visits}    访问数量
{content:likes}    点赞数量
{content:oppose}    反对数量
{content:likeslink}    点赞链接
{content:opposelink}    反对链接
{content:ext_***}    调取扩展字段内容
{content:precontent}    上一篇内容(带链接)
{content:nextcontent}    下一篇内容(带链接)
{content:prelink}    上一篇内容链接
{content:nextlink}    下一篇内容链接
{content:pretitle}    上一篇内容标题
{content:nexttitle}    下一篇内容标题
{content:nexttitle notext='no more'}    设置“没有了”文本,设置参数时如果带空格,需要用单引号
{content:preico}    上一篇内容缩略图(V2.0+)
{content:nextico}    下一篇内容缩略图(V2.0+)
23、指定内容标签
适用范围:全站任意地方均可使用
标签作用:用于调取指定id的内容
23.1、调取指定内容
{pboot:content id=*}
<a href= "[content:link]">[content:title]</a>
{/pboot:content}
控制参数:
id=*  内容的ID号,必填,用于控制输出的内容,适用单页或列表页内容
scode=* 单页的分类编码,必填,用于控制输出单页的内容,只适用单页内容
23.2、可使用的内容标签
[content:id]    编号
[content:scode]    栏目编码
[content:subscode]    副栏目编码
[content:sortname]    栏目名称
[content:subsortname]    副栏目名称
[content:sortlink]    栏目链接
[content:subsortlink]    副栏目链接
[content:title]    标题
[content:titlecolor]    标题颜色
[content:subtitle]    副标题
[content:author]    作者
[content:source]    来源
[content:link]    链接
[content:outlink]    外部链接
[content:date]    发布日期
[content:ico]    缩略图
[content:pics]    图集
[content:content]    内容
[content:tags]    直接输出tags
[content:enclosure]    附件
[content:enclosuresize]    附件大小
[content:keywords]    关键词
[content:description]    描述
[content:istop]    是否置顶
[content:isrecommend]    是否推荐
[content:isheadline]    是否头条
[content:visits]    访问数量
[content:likes]    点赞数量
[content:oppose]    反对数量
[content:likeslink]    点赞链接
[content:opposelink]    反对链接
[content:ext_***]    调取扩展字段内容
24、指定内容多图遍历
适用范围:全站任意地方均可使用
标签作用:用于依次输出指定内容的多张图片
24.1、指定内容多图遍历
{pboot:pics id=* num=*}
<img src="[pics:src]" alt="[pics:title]">
{/pboot:pics}
控制参数:
id=*  内容ID号,必填,用于控制需要输出图片的内容,也可使用id={content:id}、id=[list:id]自适应当前内容及列表
num=*  数量,非必填,用于控制需要输出图片得数量
field=*  多图字段名称(V3.1.0+),默认为pics,即系统默认的多图字段,如果使用扩展字段则必须指定字段名称
24.2、可使用的多图标签
[pics:n]    序号从0开始
[pics:i]    序号从1开始
[pics:src]    图片地址
[pics:title]    图片标题(V3.0.6+)
25、内容tags标签调用
适用范围:全站任意地方均可使用
获取当前tags值可用:{$get.tag}
25.1、调用指定栏目下的内容tags
{pboot:tags scode=*,*}
<a href="[tags:link]">[tags:text]</a>
{/pboot:tags}
    此处tags的链接指向所填scode分类下列表页,比如如果填写5,7,那么5下面的内容指向5,7下面的指向7。
控制参数:
scode=*  栏目编码,用于控制需要输出内容的栏目编码,多个用逗号隔开
num=*  数量,非必填,用于控制需要输出的数量
target=tag (V2.0.6+)可以指定链接跳转到tags.html独立模板
25.2、调用指定内容的tags
{pboot:tags id=*}
<a href="[tags:link]">[tags:text]</a>
{/pboot:tags}
    此处tags的链接默认指向内容本身的分类,如果你不想这样,那么可以指定scode=* 来设置跳转的分类。
控制参数:
id=*  内容ID,用于控制需要输出的内容ID,如果与列表标签嵌套可以用id=[list:id]
num=*  数量,非必填,用于控制需要输出的数量
target=tag (V2.0.6+)可以指定链接跳转到tags.html独立模板
25.3、使用tags显示相似内容列表
{pboot:list scode=* tags='x,y'}
<p><a href="[list:link]">[list:title]</a></p>
{/pboot:list}
此处scode可以是当前栏目标签{sort:scode},详情页可配合tags={content:tags}来调用当前文章的相关相似文章
25.4、可使用的列表标签
[tags:n]    序号从0开始
[tags:i]    序号从1开始
[tags:link]    链接地址
[tags:text]    tags名称
26、指定内容多选字段遍历
适用范围:全站任意地方均可使用
标签作用:用于依次输出指定内容的多选值,也可用于遍历逗号隔开的字段,如tag
26.1、指定内容多选遍历
{pboot:checkbox id=* field=*}
[checkbox:text]
{/pboot:checkbox}
控制参数:
id=*  内容ID号,必填,用于控制需遍历多选的内容,也可使用id={content:id}、id=[list:id]自适应当前内容及列表
field=*  字段,必填,用于控制需要遍历的字段,如扩展字段产品特色:ext_cpts
26.2、可使用的多选遍历标签
[checkbox:n]    序号从0开始
[checkbox:i]    序号从1开始
[checkbox:text]    文本
27、幻灯片轮播图标签
适用范围:全站任意地方均可使用
标签作用:用于依次输出指定分组的幻灯片图片
27.1、幻灯片轮播图列表
{pboot:slide gid=* num=*}
<img src="[slide:src]">
{/pboot:slide}                   
控制参数:
gid=*  分组,必填,用于控制需要输出的幻灯片分组
num=*  数量,非必填,用于控制需要输出的数量,默认为5个
27.2、可使用的列表标签
[slide:n]    序号从0开始
[slide:i]    序号从1开始
[slide:id]    编号
[slide:pic]    图片地址
[slide:link]    链接地址
[slide:title]    标题
[slide:subtitle]    副标题
28、友情链接标签
适用范围:全站任意地方均可使用
标签作用:用于依次输出指定分组的友情链接
28.1、友情链接列表
{pboot:link  gid=* num=*}
<a href="[link:link]" title="[link:name]"><img src="[link:logo]"></a>
{/pboot:link}
控制参数:
gid=*  分组,必填,用于控制需要输出的友情链接分组
num=*  数量,非必填,用于控制需要输出的数量,默认为10个
28.2、可使用的列表标签
[link:n]    序号从0开始
[link:i]    序号从1开始
[link:id]    编号
[link:name]    链接名称
[link:link]    链接地址
[link:logo]    链接Logo图
29、留言板标签
适用范围:全站任意地方均可使用
标签作用:用于用户提交留言和调取留言记录
29.1、留言提交表单
<form action="{pboot:msgaction}"  method="post">
    联系人:<input type="text" name="contacts" >
    手机:<input type="text" name="mobile" >
    内容:<input type="text" name="content" >
    验证码:<input type="text" name="checkcode" ><img   title="点击刷新"  src="{pboot:checkcode}">
    <button type="submit">提交</button>
</form>
表单提交方式为post,表单中提交的字段名称需要与后台自定义表单中添加的字段一致,否则会导致提交失败。
需要更多字段时请在后台自定义表单中新增留言表单字段,然后再在前台新增form字段.
标签说明:
{pboot:msgaction} 为留言表单接收地址
{pboot:checkcode} 为验证码图片地址
29.2、留言记录列表
{pboot:message num=*}
    <p>[message:contacts]</p>
    <p>[message:content]</p>
{/pboot:message}
调取的留言记录默认执行分页,使用内容列表的分页代码即可.
内容隐私,使用截取功能: [message:mobile substr=1,3]****[message:mobile substr=8]  输出效果:187****6563
控制参数:
num=* 数量,非必填,为调取的留言分页大小
page=* 是否分页1或0,非必填,用于关闭分页
lg=* 调取指定语言留言,非必填,设置all则所有语言,不添加该参数则默认为当前语言(V1.3.7+)
29.3、留言记录列表可用标签
[message:n]    序号从0开始
[message:i]    序号从1开始
[message:contacts]    联系人
[message:mobile]    手机
[message:content]    内容
[message:recontent]    回复内容
[message:ip]    用户IP
[message:os]    用户操作系统
[message:bs]    用户浏览器
[message:askdate]    留言时间
[message:replydate]    回复时间
[message:***]    自定义的其它字段
[message:nickname]    会员昵称(V3.0+)
[message:username]    会员账号(V3.0+)
[message:headpic]    会员头像(V3.0+)
30、自定义表单标签
适用范围:全站任意地方均可使用
标签作用:用于用户提交表单和调取表单记录
30.1、使用步骤
1)到后台”扩展内容>自定义表单“中添加表单
2)对新增的表单添加字段
3)到前台模板中新增form表单
问:为什么自定义表单后台添加字段没有类型选择???
答:表单中字段类型只不过是页面表现的形式,类型只需在前端模板中根据实际需要编写对应HTML表单字段类型即可,数据对于后端存储来说均为文本,
PbootCMS希望给前端开发者最大的开发自由,想什么类型模板说了算,这才是真正的前后端分离,那么PbootCMS的表单其实给与了最大的灵活性和通用性。
30.2、提交表单示例
<form action="{pboot:form fcode=*}"  method="post">
    姓名(单行文本):<input type="text" name="name" >
    性别(单选类型):
    <input type="radio" value="男" name="sex" >男
    <input type="radio" value="女" name="sex" >女
    爱好(多选类型):
    <input type="checkbox" value="篮球" name="like[]" >篮球
    <input type="checkbox" value="足球" name="like[]" >足球
    省份(下拉类型):
    <select name="province">
      <option value="北京">北京</option>
      <option value="上海">上海</option>
    </select>
    简介(多行文本):<textarea name="description" ></textarea>
    <button type="submit">提交</button>
</form> 
表单提交方式为post,表单中提交的字段名称需要与后台自定义表单中添加的字段一致,否则会导致提交失败。
需要特别提醒的是,如果字段为多选类型,那么表单字段名称需要用中括号,比如选择爱好:
    <input type="checkbox" value="篮球" name="like[]" >篮球
    <input type="checkbox" value="足球" name="like[]" >足球
标签说明:
{pboot:form fcode=*} 为表单接收地址,fcode对应后台接收表单的编码
注意:此处与留言板的提交地址不可混淆,内置的留言表单使用专用地址{pboot:msgaction},其余自定义表单则按照此处规则定义提交地址。
30.3、表单记录列表
{pboot:formlist fcode=* num=*}
    <p>姓名:[form:name]</p>
    <p>公司:[form:company]</p>
    <p>职位:[form:position]</p>
{/pboot:formlist}
调取的留言记录默认执行分页,使用内容列表的分页代码即可.
V1.3.3之前版本使用{pboot:form},但是如果同时使用提交表单会有冲突,所以变更了标签。
调取表单的内容的标签名称与自定义的表单字段一致。
控制参数:
fcode=* 表单编码,必填,用于控制调取的表单
num=* 数量,非必填,用于控制调取的记录分页大小
page=* 是否分页1或0,非必填,用于关闭分页
30.4、表单记录列表可用标签
[form:n]    序号从0开始
[form:i]    序号从1开始
[form:date]    提交时间
[form:***]    自定义的其它字段
31、会员标签
标签全站可用,具体使用建议参考默认模板
31.1、基本标签
{pboot:ucenter} 个人中心地址
{pboot:login} 登录地址
{pboot:register} 注册地址
{pboot:umodify} 资料修改地址
{pboot:logout} 退出登录地址
{pboot:upload} 文件上传AJAX接口
{pboot:islogin} 是否登录状态
{pboot:mustlogin} 设置页面必须登录
{pboot:sendemail} 发送邮件验证码接口,参数to
{pboot:registercodestatus} 会员注册验证码状态0、1、2
{pboot:logincodestatus} 会员登录验证码状态
{pboot:registerstatus} 是否开启注册
{pboot:loginstatus} 是否开启登录
{pboot:commentstatus} 是否开启评论
31.2、标签权限控制参数
showgcode=* 指定等级显示,支持多个逗号隔开
showucode=* 指定用户显示,支持多个逗号隔开
hidegcode=* 指定等级隐藏,支持多个逗号隔开
hideucode=* 指定用户隐藏,支持多个逗号隔开
showgcodelt=* 等级小于显示
showgcodegt=* 等级大于显示
showgcodele=* 等级小于等于显示
showgcodege=* 等级大于等于显示
hidegcodelt=* 等级小于隐藏
hidegcodegt=* 等级大于隐藏
hidegcodele=* 等级小于等于隐藏
hidegcodege=* 等级大于等于隐藏
showlogin=1 登录后显示
hidelogin=1 登录后隐藏
对于内容及栏目,也支持在后台直接控制;
标签使用,如:{content:content showlogin=1} 内容登录后可见
31.3、会员资料标签
{user:ucode} 会员编码
{user:username} 会员用户名
{user:useremail} 会员邮箱
{user:usermobile} 会员手机
{user:gcode} 等级编码
{user:gname} 等级名称
{user:registertime} 注册时间
{user:logincount} 登录次数
{user:lastloginip} 最后登录IP
{user:lastlogintime} 最后登录时间
{user:headpic} 头像URL
{user:***} 自定义会员字段,如果{user:sex}
31.3、会员相关表单字段
username、password、checkcode 登录必填
username、nickname、password、rpassword、checkcode 注册必填
32、文章评论
文章评论调用在内容详情页可用,具体使用建议参考默认模板
32.1、基本标签
{pboot:commentcodestatus} 验证码是否开启
{pboot:commentaction} 评论提交地址
comment、checkcode 评论表单必填
注:由于涉及东西较多,具体使用可参考默认模板
32.2、评论循环输出
    {pboot:comment contentid={content:id}}
        [comment:***]
        {pboot:commentsub}
        [commentsub:***]
    {/pboot:commentsub}
    {/pboot:comment}
32.3、可使用的输出标签
[comment:n]    序号,从0开始
[comment:i]    序号,从1开始
[comment:pid]    父评论ID
[comment:contentid]    评论文章ID
[comment:comment]    评论内容
[comment:ip]    IP地址
[comment:os]    操作系统
[comment:bs]    浏览器
[comment:date]    日期
[comment:uid]    评论人ID
[comment:username]    评论人账号
[comment:nickname]    评论人昵称
[comment:headpic]    评论人头像
[comment:pid]    父评论人ID
[comment:pusername]    父评论人账号
[comment:pnickname]    父评论人昵称
[comment:pheadpic]    父评论人头像
[comment:likes]    点赞数量
[comment:oppose]    反对数量
[comment:replyaction]    评论回复提交地址
{pboot:commentsub} 子评论输出
    [commentsub:***] 子评论调用字段同上
{/pboot:commentsub}
33、我的评论
用于在个人中心我的评论页面调用,具体使用建议参考默认模板
33.1、基本标签
{pboot:mycommentpage}  我的评论页面地址
33.2、评论循环输出
{pboot:mycomment}
    [comment:***]
{/pboot:mycomment}
33.3、可使用的输出标签
[mycomment:n]    序号,从0开始
[mycomment:i]    序号,从1开始
[mycomment:pid]    父评论ID
[mycomment:contentid]    评论文章ID
[mycomment:title]    评论文章标题
[mycomment:comment]    评论内容
[mycomment:ip]    IP地址
[mycomment:os]    操作系统
[mycomment:bs]    浏览器
[mycomment:date]    日期
[mycomment:uid]    评论人ID
[mycomment:username]    评论人账号
[mycomment:nickname]    评论人昵称
[mycomment:headpic]    评论人头像
[mycomment:pid]    父评论人ID
[mycomment:pusername]    父评论人账号
[mycomment:pnickname]    父评论人昵称
[mycomment:pheadpic]    父评论人头像
[mycomment:likes]    点赞数量
[mycomment:oppose]    反对数量
[mycomment:status]    评论状态:1审核2待审核
[mycomment:delaction]    评论删除地址
34、多条件筛选标签
适用范围:内容列表页使用,其实也可以用在首页等
标签作用:用于对内容列表进行筛选
34.1、使用步骤
1)到后台对模型添加扩展字段,字段类型选择单选或多选,同时填写单选或多选的可选内容;
2)添加对应模型的栏目,并对栏目添加内容;
3)到前台模板中调用相关扩展字段进行输出,具体见下面的例子。
注意:如果需要在首页使用筛选,列表需要启用分页功能,添加page=1参数才有效。
4)获取筛选值可以用{$get.xxxx},如获取类型:{$get.ext_leixing}
34.2、筛选调用标签
1)全部标签
{pboot:selectall field=* text=* class=* active=*}
控制参数:
field=* 筛选的字段,必填,用于控制调取的筛选字段名称
text=* 显示文字,非必填,用于控制显示的文字,默认显示”全部“
class=* 非选中时样式,非必填,用于设置为文字非选中时的class常规样式
active=* 选中时样式,非必填,用于设置为文字选中时的class高亮样式
2)筛选值标签
{pboot:select field=*}
<a href= "[select:link]">[select:value]</a>
{/pboot:select}             
控制参数:
field=* 筛选的字段,必填,用于控制调取的筛选字段名称
一般情况下我们会有多个字段,那么只要重复上面的代码即可。
选中值高亮处理:{pboot:if('[select:value]'=='[select:current]')}class= "active" {/pboot:if}
3)筛选可用标签
[select:i]    序号
[select:current]    当前选中值
[select:link]    链接
[select:value]    筛选值
34.3、多条件筛选示例
<p>
类型:{pboot:selectall field=ext_leixing text=全部 class='btn btn-light'  active='btnbtn-info'} |
{pboot:select field=ext_leixing}
{pboot:if([select:i]>1)}|{/pboot:if}
<a href="[select:link]"{pboot:if('[select:value]'=='[select:current]')}class="active" {/pboot:if}>[select:value]</a>
{/pboot:select}
</p>
<p>
颜色:{pboot:selectall field=ext_yanse text=全部 class='btn btn-light' active='btnbtn-info'} |
{pboot:select field=ext_yanse}
{pboot:if([select:i]>1)}|{/pboot:if}
<a href="[select:link]"{pboot:if('[select:value]'=='[select:current]')}class="active" {/pboot:if}>[select:value]</a>
{/pboot:select}
</p>
35、多条件搜索
适用范围:全站任意地方均可使用
标签作用:用于执行站内搜索功能
35.1、最简单的搜索示例
<form action="{pboot:scaction}"  method="get">
    关键字:<input type="text" name="keyword" >
    <button type="submit">搜索</button>
</form>
    表单提交方式为get.              
使用说明:
{pboot:scaction} 为搜索提交地址
注意:表单提交方式为get,此表单默认匹配title标题字段
35.2、定义搜索字段示例
<form action="{pboot:scaction}"  method="get">
    关键字:<input type="text" name="keyword" >
    <input type="hidden" name="field" value="title" >
    <button type="submit">搜索</button>
</form>
    或:
<form action="{pboot:scaction}"  method="get">
    <select name="field">
        <option value="title">内容标题</option>
        <option value="content">内容详情</option>
    </select>
    关键字:<input type="text" name="keyword" >
    <button type="submit">搜索</button>
</form>
    通过添加隐藏域传递field值来控制搜索的字段,也可以同时设置多个字段,如: value="title|content" ,当然这只是方式之一,后面还有!
35.3、定义更多搜索条件示例
<form action="{pboot:scaction}"  method="get">
    关键字:<input type="text" name="keyword" >
    <input type="hidden" name="field" value="title" >
    <input type="hidden" name="scode" value="2,3" >
    <button type="submit">搜索</button>
</form>
    这里只定义搜索的字段和搜索的分类,其实你可以定义更多数据库中任意可用的字段。如author为admin的:name="author" value="admin",当然你可以使用非隐藏域,那么就相当于综合搜索类型。
如果需要定义的scode分类有多个,可以用逗号隔开,同时需要注意,如果表单传递的分类和字段无效时,要考虑结果页循环是否做了限制。
(V1.3.7+)如果有多个搜索表单想定义不同的结果页模板,那么可以传递searchtpl字段来定义模板页,如:
    <input type="hidden" name="searchtpl" value="test.html" >
35.4、多条件综合搜索示例
<form action="{pboot:scaction}"  method="get">
    内容:<input type="text" name="content" >
    标题:<input type="text" name="title" >
    作者:<input type="text" name="author" >
    <input type="hidden" name="scode" value="2,3" >
    <button type="submit">搜索</button>
</form>
    这里自定义了三个字段,其实你可以定义更多数据库中任意可用的字段。
    如果URL采用兼容模式,这时候搜索应该使用POST,或者在首行添加隐藏域,<input type="hidden" name="search" >
35.5、搜索结果列表
{pboot:search}
<a href="[search:link]">[search:title]</a>
{/pboot:search}           
使用说明:
搜索结果页面使用模板search.html
num=*  每页数量,非必填,用于控制分页大小
order=*   排序方式,非必填,用于输出内容的排序方式,可选:date、sorting、istop、isrecommend、isheadline、visits、likes、oppose等字段,其中sorting为按后台填写的排序,122版本开始支持自定义模式,如:order='date desc,id desc' 、order='sorting desc,id desc',(V1.3.7+)还支持random随机排序
scode=*  分类编码,非必填,加前面说的方式,此作为第二种限制搜索分类的方式,多个分类用逗号隔开,如: scode='2,3,4'
field=* 字段限制,非必填,在使用了keyword时用于限定匹配的数据库字段,多个字段用竖线隔开即可,如:field='title|content'
filter=*|x,y 数据过滤,非必填,用于对列表内容进行过滤筛选,如:filter=title|ASP,PHP 只显示标题含有ASP和PHP的内容
fuzzy=*  是否模糊匹配,非必填,可选1或0,1时为默认的模糊匹配,0则关闭
    搜索结果默认执行分页,使用内容列表的分页代码即可.
35.6、搜索结果列表可用标签
 获取当前搜索内容:{pboot:keyword}   
 对搜索结果关键字进行标红 mark=1 (V2.0.5新增),如:[search:title mark=1];
[search:n]    序号从0开始
[search:i]    序号从1开始
[search:id]    编号
[search:scode]    分类编码
[search:subscode]    副分类编码
[search:sortname]    分类名称
[search:subsortname]    副分类名称
[search:sortlink]    分类链接
[search:subsortlink]    副分类链接
[search:title]    标题
[search:titlecolor]    标题颜色
[search:subtitle]    副标题
[search:author]    作者
[search:source]    来源
[search:link]    链接
[search:outlink]    外部链接
[search:date]    发布日期
[search:ico]    缩略图
[search:pics]    多图
[search:content]    内容
[search:enclosure]    附件
[search:enclosuresize]    附件大小
[search:keywords]    关键词
[search:description]    描述
[search:istop]    是否置顶
[search:isrecommend]    是否推荐
[search:isheadline]    是否头条
[search:visits]    访问数量
[search:likes]    点赞数量
[search:oppose]    反对数量
[search:likeslink]    点赞链接
[search:opposelink]    反对链接
36、多语言/区域建站
标签作用:用于使用同一个后台建立多国语言网站或多区域网站
36.1、使用步骤
1)在后台"系统管理>数据区域"添加相应的区域,具体参考默认区域;
2)将多语言的模板放入模板目录,不同语言的模板均放在template目录下;
3)在后台选择语言切换到不同语言,分别设置:站点信息(注意选择模板)、公司信息、栏目信息、添加内容等;
4)在不同模板中添加多语言切换按钮。
36.2、多语言切换按钮
<a href="{pboot:lgpath}&lg=cn">切换中文</a>
<a href="{pboot:lgpath}&lg=en">切换英文</a>
请注意:PB2.0开始lg前面用&符号,之前老版本用?符号!
更多语言,类似方式添加即可。
如何判断当前语言并高亮?
在按钮上添加判断语句:{pboot:if('{pboot:sitelanguage}'=='cn')}class="active"{/pboot:if}
37、IF条件语句使用
标签作用:用于根据条件输出不同内容
注意:从V3.2.0开始,if标签仅支持'>'、'>='、'!='、'=='、'<='、'<'、'&&'、'||'、'%'等符号,详情可查看V3.2.0开发日志
37.1、IF语句格式
{pboot:if('a'=='b')}
  内容1
{else}
  内容2
{/pboot:if}
使用提示:
对于非数字类的条件均为字符串类型,请加上引号,如:{pboot:if('[list:author]'=='admin')},但是数字类的可以不加:{pboot:if([list:i]==1)}
如果条件有多个,可以按照PHP的语法进行运算,如下:
条件并列:{pboot:if('[list:author]'=='admin' && [list:i]==1)}
条件或:{pboot:if('[list:author]'=='admin' || [list:i]==1)}
37.2、IF语句嵌套
{pboot:if('a'=='b')}
  {pboot:2if('a'=='c')}
    内容1
  {2else}
    内容2
  {/pboot:2if}
{else}
  内容3
{/pboot:if}
 嵌套层级理论上不受限制,按此方式用数字依次嵌套即可。
38、lopp循环语句使用
标签作用:用于根据循环输出一段内容
Loop语句格式
{pboot:loop start=* end=*}
  <p>这是第[loop:i]次,索引号为[loop:index]</p>
{/pboot:loop}
控制参数:
start=* 起始数字,默认1开始
end=* 结束数字,必填
39、API接口列表
标签作用:用于远程调取系统数据,使用小程序、公众号、APP等。
使用说明
1)请先到后台进行API相关参数配置,强烈建议启用强制认证;
2)客户端发起请求必须包含appid(认证用户)、timestamp(时间戳)、signature(签名)三个参数
3)签名参数signature通过appid、secret、timestamp三个值连接为一个字符串,然后进行双层md5加密生成;
站内使用Ajax获取数据示例:
<script>
$(document).ready(function (e) {
  var url='/api.php/cms/site';
  $.ajax({
    type: 'POST',
    url: url,
    dataType: 'json',
    data: {
      appid: '{pboot:appid}',
      timestamp: '{pboot:timestamp}',
      signature: '{pboot:signature}'
     },
    success: function (response, status) {
      if(response.code){
        //获取数据成功
        alert(response.data.title);
      }else{
        //返回错误数据
        alert(response.data);
      }
    },
    error:function(xhr,status,error){
      //返回数据异常
      alert('返回数据异常!');
    }
  });
});
</script>
此处使用了三个站内标签:{pboot:appid} 认证用户名、{pboot:timestamp} 时间戳、{pboot:signature} 认证签名
39.1、网站信息接口
http://域名/api.php/cms/site
http://域名/api.php/cms/site/name/*  单个调用
注意此处和CMS标签比不带site前缀,所以返回整体数据和调取单个时直接写名称,如:标题title
39.2、公司信息接口
http://域名/api.php/cms/company
http://域名/api.php/cms/company/name/* 单个调用
注意此处和CMS标签比不带company前缀,所以返回整体数据和调取单个时直接写名称,如:名称name
39.3、自定义标签接口
http://域名/api.php/cms/label
http://域名/api.php/cms/label/name/*  单个调用
39.4、栏目列表树接口
http://域名/api.php/cms/nav
http://域名/api.php/cms/nav/scode/*   获取指定分类的子类
39.5、当前栏目位置接口
http://域名/api.php/cms/position/scode/*  此处传递当前栏目scode值
39.6、指定分类信息接口
http://域名/api.php/cms/sort/scode/* 此处传递需要调用栏目的scode值
39.7、指定内容多图接口
http://域名/api.php/cms/pics/id/*  此处传递内容ID值
39.8、幻灯片接口
http://域名/api.php/cms/slide/gid/*/num/*  此处传递分组gid及调取的数量num值,默认num为5
39.9、友情链接接口
http://域名/api.php/cms/link/gid/*/num/*  此处传递分组gid及调取的数量num值,默认num为10
39.10、指定内容列表接口
http://域名/api.php/list/*  此处传递需要调用的栏目scode
http://域名/api.php/list/*/page/2 调取第二页,如果数据已获取完,返回类似{"code":0,"data":"已经到底了!","rowtotal":"5"}
同时还支持URL中传递num/*参数控制数量,传递order/* 控制排序方式,用POST方式会更好传递值
39.11、指定内容详情接口
http://域名/api.php/content/*  传递需要调用的内容ID(单页一样适用)
39.12、指定单页详情接口
http://域名/api.php/about/*  传递需要调用的单页scode
39.13、搜索内容接口
http://域名/api.php/cms/search   建议使用POST提交,keyword传递搜索关键字单条件搜索
同时支持传递num/*参数控制数量,传递order/* 控制排序方式,建议POST方式
可传递参数 field指定字段,多个用|隔开;
可传递参数 scode指定分类,多个用逗号隔开;
可传递参数 fuzzy等于0关闭模糊匹配,另外也可使用多数据库字段名称传递值来多条件搜索
39.14、留言提交接口
http://域名/api.php/cms/addmsg  要求POST提交,传递的字段同后台自定义的留言字段
39.15、留言内容接口
http://域名/api.php/cms/msg/num/*   传递num分页大小
http://域名/api.php/cms/msg/num/*/page/2   调取第二页
39.16、表单提交接口
http://域名/api.php/cms/addform/fcode/*  要求POST提交,fcode为表单编码,传递的字段同后台自定义的字段
39.17、表单数据读取接口
http://域名/api.php/cms/form/fcode/*     传递fcode表单编码
http://域名/api.php/cms/form/fcode/*/num/*/page/*   num控制条数,page控制页码
温馨提示:
以上接口对于多语言(区域)的情况,请地址中附加acode参数指定语言,否则调用默认语言,如:http://域名/api.php/cms/site/acode/en


伪静态-先在网站后台开启伪静态:
1、web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                 <rule name="reIndex" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="true" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php?p={R:1}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
2、.htaccess
<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?p=$1 [QSA,PT,L]
</IfModule>

分类:教程帮助 百度收录 必应收录