Public CMS 2017
模板制作
第一章 模板的用途
1. 概述
模板在Public CMS主要有以下几种用途
l 普通页面模板
l 内容页面模板
l 分类页面模板
l 任务计划脚本
在一个网站项目建设中,首先分析出普通页面、分类页、内容页三类页面有助于您快速有条理的创建站点。
2. 普通页面模板
普通页面模板通常用于展示相对固定的内容,比如首页,关于我们,联系我们等等。
此类页面除了展示以外没有分页,可能会展示系统性内容的一部分,比如最新文章,这类内容通常使用指令直接获取数据并展示;也可能拥有一个或多个碎片化的内容,比如首页中的焦点图,联系我们中的留言等,这类碎片化内容通常使用推荐位的方式实现这些内容的管理。
普通页面模板在使用动态方式时需要在后台模板元数据中设置为允许动态访问。
普通页面模板静态化时需要在后台模板元数据中设置为启用静态化,并将发布路径配置为实际需要的访问路径。
3. 内容页面模板
内容页面模板通常用于展示后台录入的文章。 PublicCMS支持动态方式展示内容也支持将内容静态化一份或多份。
在动态展示时,您至少需要向模板传递一个内容id的参数,以方便模板中使用指令获取内容相关的数据。
内容页面模板在使用动态方式时需要在后台模板元数据中设置为允许动态访问,并设置可接受参数,在其他模板中使用该模板时应该传递内容id到这个参数中。
并在分类勾选对应模型,将静态化模板清空,设置内容页面访问路径为上面的模板路径,参数名为上面的可接受参数名,值为${content.id}
内容页面模板静态化时需要在后台分类管理为分类设置可发布内容模型,为该模型选择静态化模板,并配置内容页面访问路径。在内容保存时,批量生成时,任务计划生成时就会使用配置的模板为内容生成静态化页面。
4. 分类页面模板
分类页面模板通常用于展示后台录入的文章列表,及分类的其他信息。PublicCMS支持动态方式展示内容也支持将内容静态化一份或多份。
在动态展示时,您至少需要向模板传递一个分类id的参数,以方便模板中使用指令获取内容相关的数据。
分类页面模板在使用动态方式时需要在后台模板元数据中设置为允许动态访问,并设置可接受参数,在其他模板中使用该模板时应该传递分类id到这个参数中。
并在分类设置中将静态化模板清空,设置分类页面访问路径为上面的模板路径,参数名为上面的可接受参数名,值为${category.id}
分类页面模板静态化时需要在后台分类管理为分类设置静态化模板,并配置分类页面访问路径。在分类保存时,批量生成分类首页时,生成分类页面时,任务计划生成时就会使用配置的模板为分类生成静态化页面。
5. 任务计划脚本
任务计划脚本用于PublicCMS的任务计划中,在任务计划脚本中通过调用特定指令完成某些数据操作,并由通过任务计划调度,比如在静态化站点中定时生成。
第二章 数据
1. 概述
在模板中使用<#list .data_model?keys as k>${k}</#list>输出当前模板的数据模型变量名,可以了解到当前模板中哪些变量是可以直接使用的。
在动态模板中您可能会得出如下信息:
site,RequestParameters,springMacroRequestContext,Request,JspTaglibs,org.springframework.validation.BindingResult.metadata,include,Session,Application,base,import,user,metadata
在静态化模板中您可能会得出如下信息:
site,import,url,include,metadata
其中import,include是PublicCMS内置的导入和包含指令; RequestParameters, springMacroRequestContext, Request, JspTaglibs, org.springframework.validation.BindingResult.metadata, Session, Application是springmvc框架向动态模板注入的对象,PublicCMS为您提供了很多便捷的解决方案,在不能满足您的需求时,您可以使用框架提供的对象完成比较复杂的业务实现。
2. 通用数据
l site
站点
属性 | 类型 | 名称 |
id | int | 站点ID |
name | string | 站点名称 |
useStatic | boolean | 启用静态化 |
sitePath | string | 静态站点访问地址 |
useSsi | boolean | 启用服务器端包含 |
dynamicPath | string | 动态站点访问地址 |
disabled | boolean | 已禁用 |
3. 网页模板通用数据
l metadata
模板元数据
属性 | 类型 | 名称 | 示例 |
alias | string | 模板名称 | |
publishPath | string | 发布路径 | |
useDynamic | boolean | 是否可动态访问 | |
needLogin | boolean | 是否需要登录 | |
acceptParamters | string | 可接受参数列表 | |
cacheTime | int | 缓存时间 | |
extendList | list | 扩展字段列表 | |
extendDataList | list | 扩展数据列表 | |
extendData | map | 扩展数据哈希表 | ${metadata.extendData.扩展字段名} |
4. 静态化模板通用数据
url
模板静态化路径
5. 静态化分类模板数据
category
分类实体
attribute
分类扩展
pageIndex
当前页码
6. 静态化内容模板数据
content
内容实体
category
分类
attribute
内容扩展
page
分页
text
文本
7. 推荐位数据
page
带分页的数据
8. 动态模板通用数据
l base
当前动态站点的根路径,例如:
<a href=”${base}”>返回首页</a> |
l user
当前登录用户
属性 | 类型 | 名称 | 示例 |
id | int | 用户ID | |
siteId | int | 站点ID | |
name | string | 用户名 | |
nickName | string | 昵称 | <#if user??>您好,${user.nickName}<#else>未登录</#if> |
deptId | int | 部门ID | |
roles | string | 角色ID | |
string | 邮件地址 | ||
emailChecked | boolean | 邮件地址已验证 | |
superuserAccess | boolean | 管理员权限 | |
disabled | boolean | 已禁用 | |
lastLoginDate | date | 上次登录日期 | |
lastLoginIp | string | 上次登录IP | |
loginCount | int | 登陆次数 | |
registeredDate | date | 注册日期 |
9. 动态模板参数数据
在Public CMS后台中您可以设置模板可以接收的参数,请求模板时http可接受的请求参数会被放到模板的数据模型中,您可以直接使用参数名使用。
例如:
我们在某个模板元数据中设置了id为可接受参数 在模板中我们可以使用${id}输出这个参数的值。假如这个id是内容的ID,我们可以使用<@_content id=id>${object.title}</@_content>获取这个id对应得内容,并输出内容的标题 |
第三章 指令
1. 概述
因为在freemarker模板中,指令是最为特殊的数据模型存在的,因此在PublicCMS模板中的指令除import,include指令外,一律使用“_”当作前缀,以和模板中的数据进行区分。同时模板中的指令同时支持json/jsonp接口的方式被js或其他系统调用。
指令中默认了变量名称
模板中主要有三类指令:
l 根据主键获取单个或多个实体的指令
l 根据条件查询列表的指令
l 实现特殊功能的指令
2. 实体查询指令
查询单个实体
<#assign id=1/> <@_指令名 id= id >${object.属性}</@_指令名> |
或查询多个实体
<#assign ids=’1,2,3’/> <@_指令名 ids= ids>${map[‘1’].id}</@_指令名> |
指令列表
指令名 | 实体 |
content | 内容 |
category | 分类 |
categoryType | 分类类型 |
model | 内容模型 |
place | 推荐位数据 |
tag | 标签 |
tagType | 标签类型 |
word | 搜索词 |
logTask | 任务计划日志 |
sysApp | 应用 |
sysDept | 部门 |
sysDomain | 域名 |
sysFtpUser | FTP用户 |
sysMoudle | 后台管理模块 |
sysRole | 角色 |
sysSite | 站点 |
sysTask | 任务计划 |
sysUser | 用户 |
pluginLottery | 抽奖 |
pluginVote | 投票 |
pluginVoteUser | 投票记录 |
pluginVoteItem | 投票选项 |
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 | 上一页页码 |
指令列表
指令名 | 实体 |
categoryList | 分类 |
categoryModelList | 分类模型映射 |
categoryTypeList | 分类类型 |
contentFileList | 内容附件 |
contentList | 内容 |
contentRelatedList | 内容推荐 |
modelList | 模型 |
placeList | 推荐位数据 |
tagList | 标签 |
tagTypeList | 标签类型 |
wordList | 搜索词 |
logLoginList | 登陆日志 |
logOperateList | 操作日志 |
logTaskList | 任务计划日志 |
logUploadList | 文件上传日志 |
pluginLotteryList | 抽奖 |
pluginLotteryUserList | 抽奖记录 |
pluginVoteItemList | 投票选项 |
pluginVoteList | 投票 |
pluginVoteUserList | 投票记录 |
sysAppClientList | 应用客户端 |
sysAppList | 应用 |
sysAppTokenList | 应用授权码 |
sysClusterList | 服务器节点 |
sysDeptCategoryList | 部门分类授权 |
sysDeptList | 部门 |
sysDeptPageList | 部门页面授权 |
sysDomainList | 域名 |
sysExtendFieldList | 扩展字段 |
sysFtpUserList | FTP用户 |
sysMoudleList | 后台管理模块 |
sysRoleList | 角色 |
sysRoleMoudleList | 角色模块授权 |
sysRoleUserList | 角色用户映射 |
sysSiteList | 站点 |
sysTaskList | 任务计划 |
sysUserList | 用户 |
sysUserTokenList | 用户登陆授权 |
第四章 服务支持
1. 免费支持
PublicCMS官网://www.publiccms.com/
QQ交流群:191381542 (已满) 481589563
Freemarker文档:http://www.kerneler.com/freemarker2.3.23/
在线调试FreeMarker:https://www.sanluan.com/freemarker_test.html
2. 商业化支持
目前只接受以下培训类项目:
产品使用、模板制作、环境部署、二次开发、系统架构、产品相关框架
联系方式:
QQ:315415433
3条评论
强大,迅速的CMS
这个系统目前专业性还是比较强,如果想学习可以看看视频
看了跟没看一样,一头的雾水,有针对新手的文档吗??
发表评论