opencms8.5.0-新建自定义结构化类型(Structured contents)

来源:互联网 发布:青木原树海 知乎 编辑:程序博客网 时间:2024/05/29 10:11

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(编辑)

 

输入完成,点击左上角的保存并退出。

至此自定义类型完成,可以到浏览器页面拖拽使用了。

原创粉丝点击