模版的保存路径的规则:/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模版、专题封面列表模版、搜索页模版等。这些模板都与url地址相对应,比如:
/search
(如:http://www.mysite.com/search
),模板:sys_search.html
(如:/template/1/default/sys_search.html
)/guestbook
(如:http://www.mysite.com/guestbook
),模板:sys_guestbook.html
(如:/template/1/default/sys_guestbook.html
)自定义模版主要包括首页模版、栏目页模版、详细页模版、专题详细页模版等。另外有一些特殊的广告模版(sys_ad
目录下的模版)、app模版(app_
开头的模版)。
用户的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
。