关于手册
熟悉PbootCMS手册是使用本程序开发模板的前提,虽然我们尽可能把所有标签做到简单到想哭,但是还是需要您静下心来好好看看!
关于我们
全新内核的PHP开源企业网站开发建设管理系统,系统以高效、简洁、强悍为开发目标,能够满足各类企业网站建设开发的需要。
后台访问
系统后台默认访问路径:http://域名/admin.php 账号:admin 密码:123456
技术交流群
pbootcms建站交流2群:822869853,极客模板网:www.cmsmb.top
快速部署
系统自带完整后台以及一套响应式模板,默认采用Sqlite数据库,放入PHP(5.3+)环境即可直接使用,另外,如果您是在服务器上那么需要到官网先免费获取授权码填写到后台相应位置才能打开网站前台
数据库选择
默认采用sqlite数据库,不需要做导入和配置操作,如果需要启用mysql版本,请导入数据库文件(/static/backup/sql/xxx.sql)并修改数据库连接文件信息(/config/database.php)
在线演示
点击我浏览(注意:只能看前台,后台不允许登陆)
公共标签
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时间格式化语法 ,参考链接 :http://php.net/manual/zh/function.date.php
3、HTML去除标签
drophtml=1
如:内容列表内容[list:content drophtml=1]、内容详情页内容{content:content drophtml=1}
使用说明:
一般在首页等特殊位置需要调取正文一段纯文本时使用,这时一般会配合下面的内容截取标签一起使用
4、内容截取标签
长度截取使用len=* 或 lencn=* ,使用第二个将避免中英文长度不统一问题,一个英文字符算半个字
(V1.3.5+)内容截取时可使用more='*'设置省略号内容,设置more=''则不显示省略号
如:内容列表标题截取[list:title len=10]、内容详情页时间格式化{content: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
6、自定义标签
{label:***}
使用说明:
在后台”全局配置>定制标签“中定义,前台使用对应名字进行调用即可
7、面包屑标签
{pboot:position}
参数说明:
separator=* 分隔符,非必填,默认为>>
separatoricon=* 分割图标,非必填,如使用图标字体:separatoricon='fa fa-angle-double-right'
indextext=* 首页文本,非必填,默认为"首页"
indexicon=* 首页图标,非必填,如使用图标字体:indexicon='fa fa-home'
8、当前网址
{pboot:httpurl}
使用说明:
自适应获取当前访问网址,主要用于需要使用网站路径前缀的情况,如输出:https://www.d163.net
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://domain/index.php/sitemap
http://domain/index.php/sitemap.xml
使用说明:
系统使用动态站点地图,不需要生成,访问地址即为实时地图,输出格式为xml,当然你也可以打开后另存为一个地图文件。
如果你已经开启伪静态,那么地址中将可以不含有index.php。
14、图片缩放及裁剪(v1.3.5+)
图片缩放及裁剪总共四个参数:
参数:width=* height=* maxwidth=* maxheight=*
使用方式,如:[list:ico width=100]
使用说明:
四个参数可以组合使用,此处会生成改变了图片大小的缓存图片,缓存图片是裁切过后的图片,但原上传的图片不变。
如果不想改变大小及裁切图片,只是想缩放显示,那么请使用CSS进行控制即可。
站点信息标签
适用范围:全站任意地方均可使用
标签作用:用于调取网站的基本配置信息,对应后台的“基础内容>站点信息”
{pboot:siteindex} | 站点入口地址,用于地址前置引用 |
{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} | 站点版权 |
V1.1.6+新增如下标签,推荐使用
{pboot:pagetitle} 根据不同页面自动显示标题
{pboot:pagekeywords} 根据不同页面自动显示关键字
{pboot:pagedescription} 根据不同页面自动显示描述
公司信息标签
适用范围:全站任意地方均可使用
标签作用:用于调取网站与公司相关的信息,对应后台的“基础内容>公司信息”
{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} | 其它信息 |
当前栏目标签
适用范围:在列表页或详情页使用
标签作用:用于输出当前栏目的相关信息
{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} | 栏目描述 |
指定栏目标签
适用范围:全站任意地方均可使用
标签作用:用于调导航菜单栏目列表,对应后台的“基础内容>内容栏目”
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} 可用于输出当前栏目顶级菜单的信息
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+) |
内容列表标签
适用范围:指定栏目编码时全站可用,适用当前列表
标签作用:用于调取指定栏目的内容列表或自动当前列表
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+),非必填,用于需要从第几条开始
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+),非必填,用于需要从第几条开始
其余控制参数同上面当前栏目内容列表
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] | 多图 |
[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_***] | 调取扩展字段内容 |
分页条标签
适用范围:分页条标签适用所有执行了分页的页面
标签作用:用于输出分页代码
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} | 下拉选择条 |
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依然有效。
当然,如果你对前端还算比较上手,你应该知道其实上面说的这些通过F12都可以看到。
内容详情页标签
适用范围:在内容详情页使用,包括单页和列表点击后的详情页
标签作用:用于输出当前内容的相关信息
{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} | 多图 |
{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'} | 设置“没有了”文本,设置参数时如果带空格,需要用单引号 |
指定内容标签
适用范围:全站任意地方均可使用
标签作用:用于调取指定id的内容
1、调取指定内容
{pboot:content id=*}
<a href= "[content:link]">[content:title]</a>
{/pboot:content}
控制参数:
id=* 内容的ID号,必填,用于控制输出的内容,适用单页或列表页内容
scode=* 单页的分类编码,必填,用于控制输出单页的内容,只适用单页内容
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_***] | 调取扩展字段内容 |
指定内容多图遍历
适用范围:全站任意地方均可使用
标签作用:用于依次输出指定内容的多张图片
1、指定内容多图遍历
{pboot:pics id=* num=*}
<img src="[pics:src]">
{/pboot:pics}
控制参数:
id=* 内容ID号,必填,用于控制需要输出图片的内容,也可使用id={content:id}、id=[list:id]自适应当前内容及列表
num=* 数量,非必填,用于控制需要输出图片得数量
2、可使用的多图标签
[pics:n] | 序号从0开始 |
[pics:i] | 序号从1开始 |
[pics:src] | 图片地址 |
指定内容多选字段遍历
适用范围:全站任意地方均可使用
标签作用:用于依次输出指定内容的多选值,也可用于遍历逗号隔开的字段,如tag
1、指定内容多选遍历
{pboot:checkbox id=* field=*}
[checkbox:text]
{/pboot:checkbox}
控制参数:
id=* 内容ID号,必填,用于控制需遍历多选的内容,也可使用id={content:id}、id=[list:id]自适应当前内容及列表
field=* 字段,必填,用于控制需要遍历的字段,如扩展字段产品特色:ext_cpts
2、可使用的多选遍历标签
[checkbox:n] | 序号从0开始 |
[checkbox:i] | 序号从1开始 |
[checkbox:text] | 文本 |
幻灯片轮播图标签
适用范围:全站任意地方均可使用
标签作用:用于依次输出指定分组的幻灯片图片
1、幻灯片轮播图列表
{pboot:slide gid=* num=*}
<img src="[slide:src]">
{/pboot:slide}
控制参数:
gid=* 分组,必填,用于控制需要输出的幻灯片分组
num=* 数量,非必填,用于控制需要输出的数量,默认为5个
2、可使用的列表标签
[slide:n] | 序号从0开始 |
[slide:i] | 序号从1开始 |
[slide:id] | 编号 |
[slide:src] | 图片地址 |
[slide:link] | 链接地址 |
[slide:title] | 标题 |
[slide:subtitle] | 副标题 |
友情链接标签
适用范围:全站任意地方均可使用
标签作用:用于依次输出指定分组的友情链接
1、友情链接列表
{pboot:link gid=* num=*}
<a href="[link:link]" title="[link:name]"><img src="[link:logo]"></a>
{/pboot:link}
控制参数:
gid=* 分组,必填,用于控制需要输出的友情链接分组
num=* 数量,非必填,用于控制需要输出的数量,默认为10个
2、可使用的列表标签
[link:n] | 序号从0开始 |
[link:i] | 序号从1开始 |
[link:id] | 编号 |
[link:name] | 链接名称 |
[link:link] | 链接地址 |
[link:logo] | 链接Logo图 |
留言板标签
适用范围:全站任意地方均可使用
标签作用:用于用户提交留言和调取留言记录
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}" onclick="this.src='{pboot:checkcode}?'+Math.round(Math.random()*10);" />
<button type="submit">提交</button>
</form>
表单提交方式为post,表单中提交的字段名称需要与后台自定义表单中添加的字段一致,否则会导致提交失败。
需要更多字段时请在后台自定义表单中新增留言表单字段,然后再在前台新增form字段.
标签说明:
{pboot:msgaction} 为留言表单接收地址
{pboot:checkcode} 为验证码图片地址
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+)
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:***] | 自定义的其它字段 |
多条件筛选标签
适用范围:内容列表页使用,其实也可以用在首页等
标签作用:用于对内容列表进行筛选
1、使用步骤
- 1)到后台对模型添加扩展字段,字段类型选择单选或多选,同时填写单选或多选的可选内容;
- 2)添加对应模型的栏目,并对栏目添加内容;
- 3)到前台模板中调用相关扩展字段进行输出,具体见下面的例子。
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}
2)筛选可用标签
[select:i] | 序号 |
[select:current] | 当前选中值 |
[select:link] | 链接 |
[select:value] | 筛选值 |
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>
多条件搜索
适用范围:全站任意地方均可使用
标签作用:用于执行站内搜索功能
1、最简单的搜索示例
<form action="{pboot:scaction}" method="get">
关键字:<input type="text" name="keyword" >
<button type="submit">搜索</button>
</form>
表单提交方式为get.
使用说明:
{pboot:scaction} 为搜索提交地址
注意:表单提交方式为get,此表单默认匹配title标题字段
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" ,当然这只是方式之一,后面还有!
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" >
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>
这里自定义了三个字段,其实你可以定义更多数据库中任意可用的字段。
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则关闭
搜索结果默认执行分页,使用内容列表的分页代码即可.
6、搜索结果列表可用标签
[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] | 反对链接 |
多语言/区域建站
标签作用:用于使用同一个后台建立多国语言网站或多区域网站
1、使用步骤
- 1)在后台"系统管理>数据区域"添加相应的区域,具体参考默认区域;
- 2)将多语言的模板放入模板目录,不同语言的模板均放在template目录下;
- 3)在后台选择语言切换到不同语言,分别设置:站点信息(注意选择模板)、公司信息、栏目信息、添加内容等;
- 4)在不同模板中添加多语言切换按钮。
2、多语言切换按钮
<a href="{pboot:lgpath}?lg=cn">切换中文</a>
<a href="{pboot:lgpath}?lg=en">切换英文</a>
更多语言,类似方式添加即可。
如何判断当前语言并高亮?
在按钮上添加判断语句:{pboot:if('{pboot:sitelanguage}'=='cn')}class="active"{/pboot:if}
IF条件语句使用
标签作用:用于根据条件输出不同内容
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)}
条件求余:{pboot:if([list:i]%2==0)},等于0偶数,等于1奇数
2、IF语句嵌套
{pboot:if('a'=='b')}
{pboot:2if('a'=='c')}
内容1
{2else}
内容2
{/pboot:2if}
{else}
内容3
{/pboot:if}
嵌套层级理论上不受限制,按此方式用数字依次嵌套即可。
lopp循环语句使用
标签作用:用于根据循环输出一段内容
1、Loop语句格式
{pboot:loop start=* end=*}
<p>这是第[loop:i]次,索引号为[loop:index]</p>
{/pboot:loop}
控制参数:
start=* 起始数字,默认1开始
end=* 结束数字,必填
使用说明
- 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} 认证签名
1、网站信息接口
http://IP/api.php/cms/site
http://IP/api.php/cms/site/name/* 单个调用
注意此处和CMS标签比不带site前缀,所以返回整体数据和调取单个时直接写名称,如:标题title
2、公司信息接口
http://IP/api.php/cms/company
http://IP/api.php/cms/company/name/* 单个调用
注意此处和CMS标签比不带company前缀,所以返回整体数据和调取单个时直接写名称,如:名称name
3、自定义标签接口
http://IP/api.php/cms/label
http://IP/api.php/cms/label/name/* 单个调用
4、栏目列表树接口
http://IP/api.php/cms/nav
http://IP/api.php/cms/nav/scode/* 获取指定分类的子类
5、当前栏目位置接口
http://IP/api.php/cms/position/scode/* 此处传递当前栏目scode值
6、指定分类信息接口
http://IP/api.php/cms/sort/scode/* 此处传递需要调用栏目的scode值
7、指定内容多图接口
http://IP/api.php/cms/pics/id/* 此处传递内容ID值
8、幻灯片接口
http://IP/api.php/cms/slide/gid/*/num/* 此处传递分组gid及调取的数量num值,默认num为5
9、友情链接接口
http://IP/api.php/cms/link/gid/*/num/* 此处传递分组gid及调取的数量num值,默认num为10
10、指定内容列表接口
http://IP/api.php/list/* 此处传递需要调用的栏目scode
http://IP/api.php/list/*/page/2 调取第二页,如果数据已获取完,返回类似{"code":0,"data":"已经到底了!","rowtotal":"5"}
同时还支持URL中传递num/*参数控制数量,传递order/* 控制排序方式,用POST方式会更好传递值
11、指定内容详情接口
http://IP/api.php/content/* 传递需要调用的内容ID(单页一样适用)
12、指定单页详情接口
http://IP/api.php/about/* 传递需要调用的单页scode
13、搜索内容接口
http://IP/api.php/cms/search 建议使用POST提交,keyword传递搜索关键字单条件搜索
同时支持传递num/*参数控制数量,传递order/* 控制排序方式,建议POST方式
可传递参数 field指定字段,多个用|隔开;
可传递参数 scode指定分类,多个用逗号隔开;
可传递参数 fuzzy等于0关闭模糊匹配,另外也可使用多数据库字段名称传递值来多条件搜索
14、留言提交接口
http://IP/api.php/cms/addmsg 要求POST提交,传递的字段同后台自定义的留言字段
15、留言内容接口
http://IP/api.php/cms/msg/num/* 传递num分页大小
http://IP/api.php/cms/msg/num/*/page/2 调取第二页
16、表单提交接口
http://IP/api.php/cms/addform/fcode/* 要求POST提交,fcode为表单编码,传递的字段同后台自定义的字段
17、表单数据读取接口
http://IP/api.php/cms/form/fcode/* 传递fcode表单编码
http://IP/api.php/cms/form/fcode/*/num/*/page/* num控制条数,page控制页码
温馨提示:
以上接口对于多语言(区域)的情况,请地址中附加acode参数指定语言,否则调用默认语言,如:http://IP/api.php/cms/site/acode/en
自定义路由
标签作用:用于自定义地址路由规则,美化URL地址。
路由的定义在config/route.php中操作,多条路由之间用英文逗号隔开,编辑时请使用代码编辑器,请勿使用系统自带的记事本。
如果你使用的程序版本中不存在此文件,请从新版本中拷贝一个。
1、单页面路由格式
'home/*' => 'home/about/index/scode/*'
例如"关于我们"页面:'home/about-us' => 'home/about/index/scode/1'
使用说明:
'home/*' 美化后的访问地址,例如上面例子访问地址会变为:http://域名/about-us.html
'home/about/index/scode/*' 为系统路由路径,此时星号可以是栏目的编码,如:关于我们的编码1,当然也可以是你在后台自定义的栏目地址名称
温馨提示:自定义中about为保留关键字,不要使用。
2、列表页路由格式
'home/*' => 'home/list/index/scode/*'
例如"新闻中心"页面:'home/news' => 'home/list/index/scode/2'
使用说明:
'home/*' 美化后的访问地址,例如上面的示例访问地址会变为:http://域名/news.html
'home/list/index/scode/*' 为系统路由路径,此时星号可以是栏目的编码,如:新闻中心的编码2,当然也可以是你在后台自定义的栏目地址名称
3、详情页路由格式
'home/*' => 'home/content/index/id/*'
例如某篇新闻页面:'home/test' => 'home/content/index/id/10'
使用说明:
'home/*' 美化后的访问地址,例如上面的示例访问地址会变为:http://域名/test.html
'home/content/index/id/*' 为系统路由路径,此时星号为内容的ID,当然也可以是你在后台自定义的内容地址名称
伪静态配置
标签作用:配置程序伪静态后URL中将不再包含index.php,整个地址更美观
1、IIS环境(IIS6的环境自行百度):
1)安装rewrite组件,如果使用空间一般空间商默认已经安装;
2)到后台配置参数中开启伪静态开关(老版本直接修改程序config/config.php文件url_type=2);
3)在站点目录建立web.config文件(请到源码包rewrite目录下拷贝规则)
2、Apache环境
1)开启Apache重写模块,具体请百度,如果使用空间一般空间商默认已经开启;
2)到后台配置参数中开启伪静态开关(老版本直接修改程序config/config.php文件url_type=2);
3)在站点目录建立.htaccess文件(请到源码包rewrite目录下拷贝规则)。
2、Nginx环境
1、到后台配置参数中开启伪静态(老版本直接修改程序config/config.php文件url_type=2);
2、在nginx虚拟主机location配置中添加规则,规则如下:
location / {
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php/$1 last;
}
}
注意:Nginx中如果站点部署在二级目录,请对应修改重写规则, 如:二级目录为test则:rewrite ^/test/(.*)$ /test/index.php/$1 last;
附:nginx开启PHP及pathinfo支持的方法,在server内部添加如下内容:
location ~ \.php(.*)$ {
root D:/wwwroot; #你的网站目录
fastcgi_pass 127.0.0.1:9000; #php-cgi监听地址
fastcgi_index index.php; #默认页
fastcgi_split_path_info ^(.+\.php)(.*)$; #分离路径
fastcgi_param PATH_INFO $fastcgi_path_info; #添加PATH_INFO信息
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
独立手机版
启用独立手机版可以PC/移动分别设置模板
步骤说明
- 1)在后台配置中开启手机版开关;
- 2)在PC模板目录下面建立wap目录,放入模板文件,各模板文件名同PC。例如:default/wap;
- 3)使用手机或者浏览器模拟手机进行访问。