第一章 指令
1. 概述
通过自定义指令获取数据是Public CMS实现模板自定义的主要方式,因为在freemarker模板中,指令是一种特殊的数据模型,因此在Public CMS模板中的指令除import,include指令外,一律使用“_”当作前缀,以和模板中的数据进行区分。同时模板中的指令支持json接口的方式被js或其他系统调用。
模板中主要有三类指令:
根据主键获取单个或多个实体的指令
根据条件查询列表的指令
任务计划专用指令
功能指令
您可以借助Public CMS后台模板编辑功能提供的模板制作帮助修改模板。
2. 实体查询指令
查询单个实体
<#assign id=1/> <@_指令名 id= id >${object.属性}</@_指令名> |
或查询多个实体
<#assign ids=’1,2,3’/> <@_指令名 ids= ids>${map[‘1’].id}</@_指令名> |
指令列表
指令名 | 实体 |
---|---|
内容 | |
分类 | |
分类类型 | |
comment | 评论 |
model | 内容模型 |
place | 推荐数据 |
tag | 标签 |
tagType | 标签类型 |
word | 搜索词 |
logTask | 任务计划日志 |
sysApp | 应用 |
sysDept | 部门 |
sysDomain | 域名 |
sysMoudle | 后台管理模块 |
sysRole | 角色 |
sysSite | 站点 |
sysTask | 任务计划 |
sysUser | 用户 |
3. 列表查询指令
该类指令都拥有pageIndex、count两个参数,分别表示当前页数、每页条数,查询结果统一为page。
查询列表数据
<@_指令名 pageIndex=1 count=10> <#list page.list as a> ${a? counter}:${a.id}<#if a?has_next>,</#if> </#list> </@_指令名> |
page属性列表
属性名 | 类型 | 含义 |
---|---|---|
totalCount | int | 数据总数 |
pageSize | int | 每页条数 |
pageIndex | int | 当前页码 |
list | List | 查询结果实体列表 |
totalPage | int | 总页数 |
firstResult | int | 第一条序号 |
firstPage | boolean | 是否第一页 |
lastPage | boolean | 是否最后一页 |
nextPage | int | 下一页页码 |
prePage | int | 上一页页码 |
指令列表
指令名 | 实体 |
---|---|
分类 | |
分类模型映射 | |
分类类型 | |
commentList | 评论 |
内容附件 | |
内容 | |
contentProductList | 内容产品 |
contentQuoteList | 内容引用 |
内容推荐 | |
contentTextHistoryList | 内容正文历史 |
modelList | 模型 |
placeList | 推荐数据 |
tagList | 标签 |
tagTypeList | 标签类型 |
wordList | 搜索词 |
logLoginList | 登陆日志 |
logOperateList | 操作日志 |
logTaskList | 任务计划日志 |
logUploadList | 文件上传日志 |
sysAppClientList | 应用客户端 |
sysAppList | 应用 |
sysAppTokenList | 应用授权码 |
sysClusterList | 服务器节点 |
sysDeptCategoryList | 部门分类授权 |
sysDeptList | 部门 |
sysDeptPageList | 部门页面授权 |
sysDomainList | 域名 |
sysExtendFieldList | 扩展字段 |
sysModuleList | 后台管理模块 |
sysRoleList | 角色 |
sysRoleMoudleList | 角色模块授权 |
sysRoleUserList | 角色用户映射 |
sysSiteList | 站点 |
sysTaskList | 任务计划 |
sysUserList | 用户 |
sysUserTokenList | 用户登陆授权 |
4. 任务计划专用指令
该类指令只能再任务计划脚本中使用
指令列表
指令名 | 接收参数 | 含义 |
clearLog | clearDate | 清理clearDate日期以前的日志 |
indexContent | id或ids | 根据内容ID重建索引 |
publishCategory | id或ids、pageIndex、totalPage | 生成分类静态化文件 |
publishContent | id或ids | 生成内容静态化文件 |
publishPage | path | 生成页面静态化文件 |
publishPlace | path | 生成页面片段静态化文件 |
5. 功能指令
该类指令用于完成特定功能
指令列表
指令名 | 接收参数 | 含义 |
createCategoryFile | id,templatePath,filePath,pageIndex | 用templatePath为模板生成id这个分类的第pageIndex页静态文件,路径为filePath |
createContentFile | id,templatePath,filePath,pageIndex | 用templatePath为模板生成id这条内容的第pageIndex页静态文件,路径为filePath |
createTemplateFile | templatePath,filePath,pageIndex | 用templatePath为模板生成第pageIndex页静态文件,路径为filePath |
disk | 获取磁盘状态:rootPath为数据目录路径,freeSpace为剩余容量,totalSpace为总容量,usableSpace为可用容量 | |
includePlace | path或paths | 包含页面片段,根据站点设置输出页面片段内容或ssi包含指令 |
licenseVerify | licenseData、signaturer | 验证授权文件是否合法 |
masterSite | 判断当前站点是管理站点则输出指令中包含的内容 | |
memory | 获取内容状态:freeMemory为剩余内存,totalMemory为总内存,maxMemory为最大内存 | |
metadata | path或dir | 获取模板元数据或获取某目录下所有模板的元数据map |
placeMetadata | path或dir | 获取页面片段元数据或获取某目录下所有页面片段的元数据map |
sendEmail | email、title、templatePath或content | 发射标题为title内容为路径templatePath的模板渲染结果或者content的邮件到email |
SystemProperties | 获取系统参数 | |
taskTemplateContent | path | 获取任务计划脚本内容 |
taskTemplateList | path | 获取任务计划脚本列表 |
templateContent | path | 获取模板内容 |
templateList | path | 获取模板列表 |
templateResult | templateContent | 打印模板渲染结果 |
thumb | path,width,height | 对路径为path的图片文件进行缩略,高为height宽为width |
userAgent | 获取userAgent, | |
version | 获取程序版本 | |
webFileContent | path | 获取网站资源文件内容 |
webFileList | path | 获取网站资源文件列表 |
6. 别名和作用域
当指令中输出的变量与上文变量相同时,在指令内部此变量名代表的是指令输出的变量,指令结束后该变量名被重置为上文的变量代表的值。
为了保持统一,系统中大部分输出变量都被设置为object,page,list,result等没有明确含义的变量名,在调用指令时可以指定这些变量的别名,这些变量和变量别名都会在指令结束后被回收。
想要在指令结束后继续使用一个变量,可以用assign定义一个新的变量名。
示例:
<#assign id=1/> <@_content id=id ;content>${content.title}</@_content > 下面这个输出则会提示content不存在${content. title } <@_content id=id><#assign content=object/>${content.title}</@_content > 下面这个输出会输出内容的标题${content. title } |
第二章 方法
1. 概述
方法是freemarker的一种轻量级扩展方式,一个函数可以接收多个参数但是只能有一个输出。
在Public CMS中比较简单的数据获取、某些变量的处理通常采用方法实现。
2. 方法使用
获取内容扩展属性
<#assign attribute=getContentAttribute(id)/> |
3. 方法列表
方法名 | 接收参数 | 含义 |
getContentAttribute | 内容id | 获取某条内容的扩展属性 |
getContentAttributes | 内容id数组或逗号间隔的id组成字符串 | 获取多条内容的扩展属性(不包含text字段) |
getCategoryAttribute | 分类id | 获取某个分类的扩展属性 |
getCategoryAttributes | 分类id数组或逗号间隔的id组成字符串 | 获取多个分类的扩展属性 |
getContentPage | 内容正文,页码 | 获取内容正文分页结果 分页结果: getContentPage(text,pageIndex).page 分页后的正文:getContentPage(text,pageIndex).text |
getPlaceAttribute | 推荐数据id | 获取某个推荐数据的扩展属性 |
getPlaceAttributes | 推荐数据id数组或逗号间隔的id组成字符串 | 获取多个推荐数据的扩展属性 |
getDate | 类型、日期 | 获取特定类型日期,日期为空时取当前时间 thisSunday本周日 thisMonday本周一 lastMonday上周日 lastSunday上周一 |
getHtml | 网址,消息体 | 获取网址内容 消息体为map时发生表单post请i去 消息体为字符串时发生消息体post请求 |
getKeywords | 字符串 | 获取字符串分词结果 |
getMd5 | 字符串 | 获取字符串的MD5加密结果 |
getPage | url、页码 | 获取分页处理后的url |
getRandom | 数字 | 获取最大值为输入数字的随机数 输入数字为空则获取随机数字 |
getSha1 | 字符串 | 获取字符串的SHA-1加密结果 |
getSha2 | 字符串 | 获取字符串的SHA-2加密结果 |
getSleep | 秒 | 睡眠一小段时间,一般情况下尽量不要使用它 |
getTemplateResult | 模板字符串 | 获取模板字符串渲染结果 |
geTextFromHtml | html文本 | 获取html文本中包含的文本节点结果 |
getUUID | 获取UUID | |
getXml | xml文本 | 获取xml对象 |
0条评论
发表评论