标签使用说明
- 前言
本系统所使用的标签延续freemarker标签或基于freemarker标签自定的标签,如下分别对原有标签及自定义标签进行说明。如有未说明事项都延续freemarker自身用法。
freemarker模板使用说明
- 标签使用说明
1、freemarker自带支持多种标签开始符号和结束符号,如<> 、[]等。本文档推荐使用 [],后续文档教程中默认使用[],不作特殊说明
2、自定义标签返回结果可能为对象、集合等,为了更好的区分与识别返回结果类型,自定义开发时做了特殊的返回key对应,同时也要求在是用模板获取自定义标签数据时,需要用对应标签的key。系统已支持的的所有自定义标签默认为(具体如何辨别,详见各标签中的返回对象类型,如需要更改,请参考 自定义标签开发教程中第三点特殊说明):
对象(Object): tag_bean
集合(Array) : tag_list
分页对象 : tag_pagination
3、自定义标签区别于freemarker自带标签的使用的在于将 # 替换成 @,如 [@position_page];各标签支持参数请参标签说明
注意:在同一模板中不能同时使用多种开始和结束符号
通用对象说明
栏目模板页面上可直接访问 对象 channel
示例:${channel.url!} 关于栏目对象属性可参考 栏目详情
内容模板页面上可直接访问 对象 content
示例:${content.title!} 关于内容对象属性可参考
内容详情
${txt!}当前访问正文
截取文本n个字符
[@text_cut s=a.title len=’19’ append=’…’/]
pagination 正文分页对象 使用样例如下
[#assign p=tag_pagination/]
[#assign number=p.number + 1/]
<div[#if pageClass??] class="${pageClass}"[/#if][#if pageStyle??] style="${pageStyle}"[/#if]>
共${p.totalElements}条记录 ${number}/${p.totalPages}页
[#if p.first]
首页 上一页[#t/]
[#else]
首页 上一页[#t/]
[/#if]
[#if p.last]
下一页 尾页[#else]
下一页 尾页[/#if]
第<select onChange="if(this.value==1){location.href=encodeURI('${hrefFormer}${hrefLatter}')}else{location.href=encodeURI('${hrefFormer}_'+this.value+'${hrefLatter}')}this.disabled='disabled'">
[#list 1..p.totalPages as i]
<option value="${i}" [#if number==i]selected="selected"[/#if]>${i}</option>
[/#list]
</select>页
任意页面可访问对象 site user 主要说明如下
参数 |
类型 |
示例值 |
说明 |
› id |
number |
1 |
站点ID |
› description |
string |
|
站点描述 |
› seoDescription |
string |
|
seo描述 |
› seoKeyword |
string |
|
seo关键字 |
› seoTitle |
string |
|
seo标题 |
› domain |
string |
|
域名 |
› name |
string |
|
名称 |
› systemIco |
string |
|
系统标识图ICO 地址 |
› globalConfig |
string |
|
全局配置对象 |
- -› memberOpen |
boolean |
|
是否开启会员功能 |
- -› memberRegisterOpen |
boolean |
|
是否开启会员注册功能 |
- -› memberRegisterCaptcha |
boolean |
|
是否会员注册需要图形验证码 |
参数 |
类型 |
示例值 |
说明 |
› id |
number |
1 |
用户ID |
› username |
string |
|
会员账户 |
› name |
string |
|
姓名 |
› nickname |
string |
|
昵称 |
› email |
string |
|
邮箱 |
› phone |
string |
|
电话 |
› gender |
string |
|
性别 1 男 2 女 3 保密 |
› birthday |
string |
|
生日 |
› enabled |
string |
|
是否启用 false-否 true-是 |
› headImgUrl |
string |
|
会员头像url |
› headImgId |
string |
|
头像图片资源id |
› exp |
string |
|
成长值 |
› levelName |
string |
|
会员等级名称 |
› levelImageUrl |
string |
|
会员等级图片 |
› admin |
boolena |
|
是否管理员 |
- globalConfig数据结构
数据结构类型:object
参数 |
类型 |
示例值 |
说明 |
› name |
number |
1 |
名称 |
› title |
string |
|
标题 |
› description |
string |
|
描述 |
› keywords |
string |
|
关键词 |
› customerServiceMobile |
string |
|
客服电话 |
› customerServiceEmail |
string |
|
客服邮箱 |
› address |
string |
|
地址 |
› areaDistrict |
string |
|
显示地区(区) |
› areaCity |
string |
|
显示地区(市) |
› searchKeyWords |
string[] |
|
搜索关键词数组 |
› hotWords |
string |
|
搜索热词 |
› logo |
string |
|
logo |
› loginAndRegLogo |
string |
|
注册登录页log |
› userRegisterAgreement |
string |
|
用户注册协议 |
› area |
Array |
|
地区数据 |
› copyright |
string |
|
版权信息 |
› wechatQRcodeUrl |
string |
|
微信公众号图片 |
› miniprogramQRcodeUrl |
string |
|
微信小程序图片 |
› qqOpen |
boolena |
|
qq登录是否开启 |
› wechatOpen |
boolena |
|
微信登录是否开启 |
› weiboOpen |
boolena |
|
微博登录是否开启 |
内容分页
参数 |
类型 |
必填 |
示例值 |
说明 |
channelId |
Array |
false |
[1,2] |
栏目id集合 |
tagId |
Array |
false |
[2,3] |
tag词id集合 |
channelPath |
Array |
false |
[‘/aa’,’/ff’] |
栏目路径集合 |
siteId |
Array |
false |
[2,4]] |
站点id集合 |
typeId |
Array |
false |
[1,3] |
内容类型id集合 |
title |
string |
false |
1 |
标题 |
new |
boolean |
false |
false |
true 新内容 |
isTop |
boolean |
false |
true |
true 置顶 |
timeBegin |
Date |
false |
|
开始时间 |
timeEnd |
Date |
false |
|
结束时间 |
excludeId |
Array |
false |
1 |
排除id集合 |
orderBy |
number |
false |
1 |
1创建时间降序2创建时间升序3总访问数降序4总访问数升序5月访问数降序6月访问数升序7周访问数降序8周访问数升序9日访问数降序10日访问数升序11总评论数降序12总评论数升序13月评论数降序14月评论数升序15周评论数降序16周评论数升序17日评论数降序18日评论数升序19总点赞数降序20总点赞数升序21月点赞数降序22月点赞数升序23周点赞数降序24周点赞数升序25日点赞数降序26日点赞数升序27发布时间降序28发布时间升序29置顶降序30id升序31id降序32日下载降序33周下载降序34月下载降序35总下载降序 |
pageNo |
number |
true |
1 |
内容id |
count |
number |
false |
1 |
数量 |
|参数|类型|示例值|说明|
对象格式参考详情
内容详情
内容列表
参数 |
类型 |
必填 |
示例值 |
说明 |
ids |
number |
false |
1 |
内容id集合 |
channelId |
Array |
false |
[1,2] |
栏目id集合 |
tagId |
Array |
false |
[2,3] |
tag词id集合 |
channelPath |
Array |
false |
1 |
栏目路径集合 |
siteId |
Array |
false |
1 |
站点id集合 |
typeId |
Array |
false |
1 |
内容类型id集合 |
title |
string |
false |
1 |
标题 |
new |
boolean |
false |
1 |
true 新内容 |
isTop |
boolean |
false |
1 |
true 置顶 |
timeBegin |
Date |
false |
1 |
开始时间 |
timeEnd |
Date |
false |
1 |
结束时间 |
count |
number |
false |
1 |
数量 |
excludeId |
Array |
false |
1 |
排除id集合 |
orderBy |
number |
false |
1 |
1创建时间降序2创建时间升序3总访问数降序4总访问数升序5月访问数降序6月访问数升序7周访问数降序8周访问数升序9日访问数降序10日访问数升序11总评论数降序12总评论数升序13月评论数降序14月评论数升序15周评论数降序16周评论数升序17日评论数降序18日评论数升序19总点赞数降序20总点赞数升序21月点赞数降序22月点赞数升序23周点赞数降序24周点赞数升序25日点赞数降序26日点赞数升序27发布时间降序28发布时间升序29置顶降序30id升序31id降序32日下载降序33周下载降序34月下载降序35总下载降序 |
id |
number |
false |
1 |
内容id |
relate |
number |
true |
1 |
1手动关联内容2手动关联加tag词关联3tag词关联内容 |
|参数|类型|示例值|说明|
对象格式参考详情
内容详情
模板资源文件、变量说明
模板文件夹
/WEB-INF/t/cms/www/default 其中www是站点目录 default是方案目录文件夹
模板资源文件夹
/r/cms/www/default 其中www是站点目录 default是方案目录文件夹
模板文件夹下子文件夹说明
channel 栏目列表文件
content 内容详情文件
index 首页
通用url对应模板规则
(/member/ /member- 前缀url都要求用户登录,未登录服务端会重定向到登录页)
${base}/tag.htm 对应模板文件 /tag.html
${base}/special-tag.htm 对应模板文件 /special/tag.html (-代表文件夹分隔)
${base}/member-center.htm 对应模板文件 /member/center.html(-代表文件夹分隔)
访问域名对应站点的首页模板
channel、content 模板需要在栏目那设置模板 查看模板的效果
特殊url对应模板
/login.html 登录页 对应登录url ${base}/login
/csi/login_csi.html 登录状态页 对应登录url ${base}/login_csi 注意登录状态页不可直接用include包含进来是需要动态load ${base}/login_csi 加载的(有静态页面的情况)
公共模板变量:
${base} url前缀,获取栏目内容url(${content.url!} 这种不需要加${base}/)
${$res} PC模板资源路径 对应的 /r/cms/www/default 其中www是站点路径 default是pc端方案路径
${mobileRes} 手机模板资源路径 对应的 /r/cms/www/mobile 其中www是站点路径 mobile是手机端方案路径
${user} 当前登录用户对象 ${user.username!} 获取当前登录用户名
${globalConfig} 全局配置对象
资源文件引用
${res} PC模板资源路径 对应 /r/cms/www/default/
${mobileRes} 手机模板资源路径 对应 /r/cms/www/mobile/
特殊说明
/member/ /member- 等需要用户登录交互类请求,如果不想重定向页面则需要新增header头 Redirect-Header 值为false
包含页面语法类似如下
[#include “../include/header.html”/]
内容页下载文库地址
/download/o_doc_download?contentId=${content.id}
/download/byContent?contentId=${content.id} 整个内容所有附件批量下载
/download/byField?contentId=${content.id}&field=字段名称 整个内容某附件字段所有附件批量下载
/download/byResId?resId=资源id 单附件资源下载