1-切换试图:
2-新建xsd文件:
右键点击新建的school.xsd文件→Edit sourcecode(编辑源代码),输入以下代码:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:include schemaLocation="opencms://opencms-xmlcontent.xsd" />
<!--此处name必须以 "s" 结尾,且type以 "OpenCms" 开头 -->
<xsd:element name="Schools" type="OpenCmsSchools" />
<xsd:complexType name="OpenCmsSchools">
<xsd:sequence>
<xsd:element name="School" type="OpenCmsSchool"
minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="OpenCmsSchool">
<xsd:sequence>
<!--本自定义类型包含的内容,Title标题,Text文本框 -->
<xsd:element name="Title" type="OpenCmsString" />
<xsd:element name="Text" type="OpenCmsHtml" />
</xsd:sequence>
<xsd:attribute name="language" type="OpenCmsLocale" use="required" />
</xsd:complexType>
<xsd:annotation>
<xsd:appinfo>
<!-- 绑定的properties文件 -->
<resourcebundle name="my.opencms.school.workplace" />
<mappings>
<mapping element="Title" mapto="property:Title" />
</mappings>
<layouts>
<!-- 配置上面的文本框 -->
<layout element="Text" widget="HtmlWidget" />
</layouts>
<validationrules />
<defaults />
<relations />
<!-- 布局标签 -->
<formatters>
<!-- side.jsp 为在侧边的模板,定义宽高等属性 -->
<formatter minwidth="150" maxwidth="250"
uri="/system/modules/my.opencms.school/formatters/side.jsp" />
<!-- detail.jsp 为在body中间显示内容的模板,定义宽高等属性 -->
<formatter minwidth="400"
uri="/system/modules/my.opencms.school/formatters/detail.jsp" />
</formatters>
</xsd:appinfo>
</xsd:annotation>
</xsd:schema>
保存,退出。
4-新建property文件:
Continue >>
Advanced >>
右键点击新建的workplace.properties文件→Edit sourcecode(编辑源代码),代码如下:
# TestNews nodes 用于在“新建”向导中显示的名称
fileicon.school=我的校园
#新建“我的校园”类型时在对话框窗口显示的标题内容
title.newschool=添加一条校园新闻
#编辑器中相应标签元素显示的名称,以下面编辑校园新闻内容是可看见效果
label.School.Title = 标题
label.School.Text= 内容
保存,关闭。
5-将创建的xsd文件作为资源类型加入到模块中:打开安装opencms安装目录下,opencms\WEB-INF\config\下的opencms-module.xml配置文件,在配置文件中找到你的模块代码,并添加新配置代码,完整代码如下所示:
<module>
<name>my.opencms.school</name>
<nicename><![CDATA[我的校园]]></nicename>
<class/>
<description><![CDATA[关于本模块的相关描述]]></description>
<version>0.1</version>
<authorname><![CDATA[yufu]]></authorname>
<authoremail><![CDATA[ilxly01@126.com]]></authoremail>
<datecreated/>
<userinstalled/>
<dateinstalled/>
<dependencies/>
<exportpoints>
<exportpoint uri="/system/modules/my.opencms.school/classes/" destination="WEB-INF/classes/"/>
</exportpoints>
<resources>
<resource uri="/system/modules/my.opencms.school/"/>
</resources>
<parameters/>
<!-- **************** 以下为新添加的内容 ****************** -->
<resourcetypes>
<!-- type中的id为唯一,为不和系统的冲突,最好在1000以上,且相互间不能冲突 -->
<type class="org.opencms.file.types.CmsResourceTypeXmlContent" name="school" id="7004">
<param name="schema">/system/modules/my.opencms.school/schemas/school.xsd</param>
</type>
</resourcetypes>
<explorertypes>
<!-- fileicon-自定义类型的文字(workplace.properties文件中读取) icon-自定义类型的图标 -->
<explorertype name="school" key="fileicon.school" icon="school.gif" reference="xmlcontent">
<newresource page="structurecontent" uri="newresource_xmlcontent.jsp?newresourcetype=school" order="7004" autosetnavigation="false" autosettitle="false"/>
<!-- 权限控制 -->
<accesscontrol>
<!-- 给予 Administrators(管理员)组,Projectmanagers(项目管理者)组,Users(用户组) 读写的全权限 -->
<accessentry principal="GROUP.Administrators" permissions="+r+v+w+c"/>
<accessentry principal="GROUP.Projectmanagers" permissions="+r+v+w+c"/>
<accessentry principal="GROUP.Users" permissions="+r+v+w+c"/>
</accesscontrol>
</explorertype>
</explorertypes>
<!-- **************** 以上为新添加的内容 ****************** -->
</module>
保存,关闭。
点击 发布项目,重启tomcat。
6-现在能看到自己新建的类型
Continue >>
7-完善自定义类型中的模板
现在根据这个类型创建出来的页面还不能显示东西,因为xsd文件有配置2个jsp页面,detail.jsp和side.jsp,还没有添加内容,现在添加进去:
detail.jsp内代码为:
<%@page buffer="none" session="false" taglibs="c,cms,fmt" %>
<fmt:setLocale value="${cms.locale}" />
<cms:formatter var="content" val="value">
<div class="view-article">
<div class="content">
${value.Title}<br/>
<!-- 显示文本框内容 -->
${value.Text}
</div>
</div>
</cms:formatter>
side.jsp内代码为:
<%@page buffer="none" session="false" taglibs="c,cms,fmt" %>
<fmt:setLocale value="${cms.locale}" />
<fmt:bundle basename="my/opencms/testnews/messages">
<cms:formatter var="content" val="value">
<div class="view-article">
<div class="content">
${value.Title}<br/>
${value.Text}
</div>
</div>
</cms:formatter>
</fmt:bundle>
8-为了能使自定义的类型能在浏览器界面上实现拖拽功能,要配置config文件
Continue >>
Continue >>
Finish.
在新建的.config文件上,右键→Edit(编辑)
输入完成,点击左上角的保存并退出。
至此自定义类型完成,可以到浏览器页面拖拽使用了。