首页

OpenCms常用标签应用使用指南,并对其举例说明

标签:opencms,OpenCms,教程,常用标签,内容管理系统,标签,cms,门户管理系统,导航标签     发布时间:2016-01-04   

一、前言

OpenCms系统经常在Jsp模板中使用的标签有文件内容加载标签、属性标签、用户信息标签、传参及包含标签等等,详情见OpenCms入门指南,在体验区可以找到标签配置的详细样例,如下图所示

OpenCms常用标签应用使用指南,并对其举例说明

二、标签示例

用下面标签之前需要在jsp头部声明头部标签库,如下所示,更多标签内容请点击参考其他

<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>

1. cms:contentload文件加载标签

常见用法加载一个或多个XML资源文件,如下所示,点击详情参考

<cms:contentload collector="singleFile" param="%(opencms.uri)">..</cms:contentload>@b@<cms:contentload collector="allInFolderDateReleasedDesc" param="/sites/test/list/art_%(number).html|v8article"> ..</cms:contentload>

2. cms:property属性标签

<cms:property name="Title" /> -> 读取当前文件的“Title”属性 @b@<cms:property name="Title" file="uri" /> ->  同上 @b@<cms:property name="locale" file="search" />  -> 读取当前文件的“locale”属性,如果没有找到, @b@则向上在其的父亲文件夹中进行查找 @b@<cms:property name="Title" file="search.uri" />  ->  同上 @b@<cms:property name="Title" file="ArtTest.html" />  ->  读取“ArtTest.html”文件的“Title”属性<br/><br/>

3. cms:user用户信息标签

此标签用于访问当前用户的基本信息,用户的基本信息在“管理”视图的“用户管理”中进行维护,用法如下

  <cms:user property="firstname"/> -> 取得当前用户的“名”(firstname) @b@  <cms:user property="lastname"/> ->  取得当前用户的“姓”(lastname) @b@  <cms:user property="name"/> ->  取得当前用户的“登录名称”(name) @b@  <cms:user property="email"/> ->  取得当前用户的“邮件地址”(email) @b@  <cms:user property="street"/> ->  取得当前用户的“住址”(street address ) @b@  <cms:user property="zip"/> ->  取得当前用户的“邮政编码”(zip code ) @b@  <cms:user property="description"/> ->  取得当前用户的“描述信息”(description) @b@  <cms:user property="otherstuff"/> ->  取得当前用户的“其它自定义信息”(otherstuff)

4.  cms:param参数标签

在其他标签中嵌套使用,用来传递参数,使用形式,如下

<cms:param name="p1" value="xwood"/>和@b@<cms:param name="p1">xwood</cms:param>等效

使用情形示例,如下

1、在使用<cms:img>时,传递相关参数,如:@b@<cms:img width="200" scaleType="1" scaleQuality="60">@b@  <cms:param name="src"><cms:link><c:out value="${curProp}"></cms:link></cms:param>@b@  <cms:param name="alt"><%=ltb.key("art.bild.altText")%></cms:param>@b@</cms:img>@b@2、在使用<cms:include>时使用@b@<cms:include file="../inc/header.jsp">@b@   <cms:param name="locale"><%=locale%></cmd:param>@b@   <cmsparam name="static_1" value="xwood.net" />@b@</cms:include>

5.  获取数据连接jsp页面标签

<%@page import="java.sql.*,org.opencms.db.*,org.opencms.main.*"%>@b@<%@b@java.sql.Connection conn = OpenCms.getSqlManager().getConnection("default");@b@// 你的代码@b@...@b@conn.close();@b@%>

6. 动态导航标签

<%@ page import="java.util.*" %><%   @b@org.opencms.jsp.CmsJspActionElement cms = new org.opencms.jsp.CmsJspActionElement(pageContext, request, response);@b@// 为当前文件文件夹下的所有子文件夹和页面创建导航@b@List list = cms.getNavigation().getNavigationForFolder();@b@Iterator i = list.iterator();@b@out.println("<h3>一个简单的导航</h3>");@b@while (i.hasNext()) {@b@    org.opencms.jsp.CmsJspNavElement ne = (org.opencms.jsp.CmsJspNavElement)i.next();@b@  //  out.println("<li><a href=/"" + cms.link(ne.getResourceName()) + "/"></a>");@b@    out.println("<li>"+ne.getNavText() + ":"+ne.getResourceName()+"</li>");@b@}    @b@out.println("</ul>");@b@@b@%>

7.  cms:link当前路径标签

<a href="<cms:link><cms:contentshow element="%(opencms.filename)" /></cms:link>" target="_blank">@b@    <cms:contentshow element="Title"/>@b@</a>@b@@b@创建当前文件夹下资源的正确链接:@b@<cms:link>index.html</cms:link>@b@@b@创建其实文件夹下资源的正确链接:@b@<cms:link>/some/other/folder/index.html</cms:link>@b@@b@创建根文件夹下资源的正确链接:@b@<cms:link>/index.html</cms:link>

8.  cms:info标签

获取系统或者JVM等全局信息,用法如下

 <cms:info property="opencms.version"/>

详请如下:

opencms系统信息 @b@opencms.version:显示 OpenCms 的版本@b@opencms.url:显示当前文件的 URL@b@opencms.webapp:显示 Web 应用名,Opencms 的安装目录名@b@opencms.webbasepath:显示到 opencms 的安装路径,在本书的环境中@b@为:C:/apache-tomcat-5.5.25/webapps/opencms/@b@opencms.request.uri:显示当前 OpenCms 的请求 UR @b@opencms.request.element.uri:如果该标签用在模版中,则显示模版文件的 URI@b@opencms.request.folder:显示当前的 OpenCms 请求目录@b@JVM系统环境 @b@java.vm.name:显示 Java 虚拟机的名称@b@java.vm.version:显示 Java 虚拟机的版本 @b@java.vm.info:information on Java VM@b@java.vm.vendor:显示 Java 虚拟机的厂商信息@b@os.name:显示操作系统的名称@b@os.version:显统示操作系 的版本@b@os.arch:显示操作系统的架构

9.  cms:contentcheck标签

这个标签用来监测 XML 内容文件中指定的内容元素是否存在,用例如下

如果 XML 内容文件有 Author 元素,则显示作者@b@<cms:contentcheck ifexists="Author">@b@      <cms:contentshow element="Author"/> @b@</cms:contentcheck>@b@@b@如果 XML 内容文件没有Author 元素,则显示“佚名”@b@<cms:contentcheck ifexistsnone="Author"> 佚名 </cms:contentcheck>@b@  @b@如果三个主题词元素存在一个,则遍历显示    @b@<cms:contentcheck ifexistsone="Keywords[1],Keywords[2],Keywords[3]">@b@    <cms:contentloop element="Keywords"> @b@        <cms:contentshow/> @b@     </cms:contentloop>  @b@</cms:contentcheck>@b@    @b@如果三个主题词元素都不存在,则显示“无主题词”     @b@<cms:contentcheck ifexistsnone="Keywords[1],Keywords[2],Keywords[3]">@b@  无主题词      @b@</cms:contentcheck>

10.  cms:contentaccess标签

用来获得当前遍历的XML内容文件的对象,利用该对象可以灵活的访问其中的元素内容,用例如下

<cms:contentload collector="allInFolderDateReleasedDesc"   param="/news/article_%(number).html|myarticle|4"  editable="true"> @b@    <cms:contentaccess var="content" /> @b@    <c:out value="${content.value['Title']}"/>  @b@    <c:out value="${content.value['Author']}"/>  @b@    <c:out value="${content.value['Type']}"/> @b@</cms:contentload>@b@@b@完整用例代码:@b@<cms:contentload collector="allInFolderDateReleasedDesc" param="/sites/test/list/art_%(number).html|v8article" editable="true">   @b@<cms:contentaccess var="content" />   @b@<c:out value="${content.value['Title']}"/>  @b@<c:if test="${content.value['Title']=='cccccccccccccc'}">@b@  true@b@</c:if>@b@@b@标题: @b@<a href="<cms:link><cms:contentshow element="%(opencms.filename)" /></cms:link>" target="_blank">@b@    <cms:contentshow element="Title"/>@b@</a> @b@内容:<cms:contentshow element="Paragraph/Text"/><br/> @b@</cms:contentload>

11. cms:contentloop标签

用来循环一个数据项的所有数据值,用例如下

<cms:contentloop element="name">@b@   <cms:contentshow />@b@</cms:contentloop>

12.  cms:contentshow标签

用于显示XML页面中的一个数据项的值,如下所示

<cms:contentshow element="name"/>@b@<cms:contentshow element="name[0]"/>等效于<cms:contentloop element="name" index="0"/>@b@<cms:contentloop element="name">@b@  <cms:contentshow/>@b@</cms:contentloop>

13.  cms:img标签

<cms:img src="/...png" scaleType="0" width="300" height="60" /> @b@说明如下@b@src:图片的路径@b@height:图片缩放后的高度@b@width:缩放后的宽度@b@scaleColor:图片缩放后的背景颜色@b@scaleFilter:图片缩放后背景CSS过滤器filter。@b@scalePosition:图片缩放后的位置  0 全居中 1:下居左 2 下居右 3 下居中  4 左居中 5 右居中 6 上居中 7 上居左  8上居右@b@scaleQuality:图片缩放后的保存质量 值为0-100@b@scaleRenderMode:图片缩放渲染模式。@b@scaleType:图片缩放类型

14.  cms:include标签

这个标签用来包含引入VFS中的文件或模版文件中的模版块,用例如下

//含引入一个静态的 HTML 文件@b@<cms:include page="page1.html" />@b@//引入jsp模板文件@b@<cms:include file="page2.jsp" />@b@//包含引入指定的 JSP 文件,并向该文件传递参数@b@<cms:include file="page3.jsp">@b@  <cms:param name="__locale">en</cms:param> @b@  <cms:param name="__param" value="hello world!" /> @b@</cms:include>@b@//包含引入模版中的 foot 模版块(element)@b@<cms:include property="template" element="foot" />