咨询1
咨询2
交流群
电话

模版制作04:模版文件介绍

文档 > 模板制作 2016-03-28 16:37 阅读

模版目录

模版的保存路径的规则:/template/{站点ID}/{模版主题}。如果当前站点ID为1,模版主题为default,则模版路径是/template/1/default。首页模板通常是/template/1/default/index.html

这里需要注意的是,模板虽然也是HTML后缀,但和纯静态HTML并不完全一样。比如在浏览器里面访问首页http://localhost:8080/,显示/template/1/default/index.html模板里的内容。但大家都知道,这个地址应该访问/index.html页面。这是因为jspxcms系统对首页请求做了处理,将请求转发到/template/1/default/index.html模板里去了。也就是说,如果自己新建一个文件/template/1/default/test.html,通过http://localhost:8080/test.html是无法访问的。很显然,http://localhost:8080/test.html访问的是/test.html而不是/template/1/default/test.html

同样的,如果直接访问http://localhost:8080/template/1/default/index.html,将会直接显示纯html内容,并不会解析里面获取动态数据的标签。

哪些请求会被jspxcms系统处理,并显示模板里面的内容呢?一般有首页(如http://localhost:8080/)、栏目页(如http://localhost:8080/node/12)、详细页(如http://localhost:8080/info/8)等。

模版资源

制作模版用到的css、js和图片等资源文件必须放到{模版路径}/_files目录下,如/template/1/default/_files。这是强制性的,否则资源文件不能正确显示。在模版中引用这些资源文件,可以使用相对路径,如:_files/my.jpg_files/img/my.png_files/css/my.css_files/scripts/my.js

为什么一定要放在_files目录下,为什么有这个限制?其实这不是限制,而是系统提供的一种便利。比如/template/1/default/index.html里面要引用/template/1/default/img/my.jpg图片,直接写<img src="img/my.jpg"/>在静态页面里面看起来没有问题;但实际运行的时候,首页的访问地址是http://localhost:8080/,那么对应的图片应该是/img/my.jpg,这显然无法访问到图片。应该要写<img src="/template/1/default/img/my.jpg"/>才能访问到图片。写这么长的地址非常麻烦,而且不灵活。所以系统提供了一个便利,会在运行时将_files替换成/template/1/default/_files,比如<img src="_files/my.jpg"/>,实际运行时会替换成<img src="/template/1/default/_files/my.jpg"/>

所以有两种方式引用相应的资源,一种是写全地址如<img src="/template/1/default/img/my.jpg"/>,这样资源文件想放在哪里就放在哪里,只要地址正确;第二种是将资源路径放在_files目录下,通过类似_files/css/my.css的路径引用资源,系统在运行时自动替换成/template/1/default/_files/css/my.css

模版文件

模版文件分为系统模版和自定义模版。系统模版的文件名是固定的,不能修改;自定义模版的文件名可以自己定义,甚至可以为中文(在Linux系统下要注意设置正确的编码)。

系统模版以sys_开头,主要包括会员中心模版、留言板模版、评论模版、投票模版、调查问卷模版、RSS模版、专题封面列表模版、搜索页模版等。

自定义模版主要包括首页模版、栏目页模版、详细页模版、专题详细页模版等。另外有一些特殊的广告模版(sys_ad目录下的模版)、app模版(app_开头的模版)。

模版与URL地址

用户的URL请求先由程序处理,然后程序解析模版,将结果返回。如果直接访问模版,会当作一个静态的HTML显示,里面的FreeMarker代码和Jspxcms标签不会被解析。

URL地址是由程序预设的,比如栏目页地址/node/{栏目ID}.jspx、详细页地址/info/{文档ID}.jspx、搜索页地址/search.jspx、RSS地址/rss.jspx。栏目页和详细页支持静态化,如果使用了页面静态化,那么URL地址就取决于页面静态化的设置,比如/news//news/index.html/news/23.html

栏目页URL地址和详细页URL地址可以通过对象的属性获得,比如${node.url}${info.url};不要写固定的URL,比如/node/12.jspx/info/89.jspx,这样会导致在使用页面静态化时,不会自动的切换成静态页地址。

模版的通用默认对象

  • global:全局对象。类型:com.jspxcms.core.domain.Global
  • site:当前站点。类型:com.jspxcms.core.domain.Site
  • orgs:当前用户所属组织集合(一个用户可以属于多个组织)。未登录则为null。类型:java.util.Collection<com.jspxcms.core.domain.Org>
  • org:当前用户所属主组织。未登录则为null。类型:com.jspxcms.core.domain.Org
  • groups:当前用户所属用户组集合(一个用户可以属于多个用户组)。未登录则为游客用户组。类型:java.util.Collection<com.jspxcms.core.domain.MemberGroup>
  • group:当前用户所属主用户组。未登录则为游客用户组。类型:com.jspxcms.core.domain.MemberGroup
  • user:当前登录用户。未登录则为null。类型:com.jspxcms.core.domain.User
  • dy:动态路径。比如搜索页地址${dy}/search.jspx
  • ctx:上下文路径。比如:${ctx}/static/vendor/My97DatePicker/WdatePicker.js。等同于HttpServletRequest.getContextPath()。类型:java.lang.String
  • url:当前页面URL地址。类型:java.lang.String