首页

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

标签:opencms,结构化内容,OpenCms,数据类型自定义,教程,步骤,内容管理系统,门户管理系统     发布时间:2016-01-04   

一、效果演示

通过OpenCms系统根据业务需求定义结构化内容类型,在用内容详情模板进行展示,具体效果如下图所示

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

二、配置步骤

1. 切换“系统管理视图”,如下图所示,定义新的模块

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

2. 如下图,定义一个“用户账户模块”

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

3. 如下图,切换到“资源管理视图”,在system->modules下找到刚定义org.opencms.account模块节点

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

4. 在classes目录下定义org、opencms、account上下级目录,如下图所示,展开classes目录在下面的account,新增一个"workplace.propertes"配置文件

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

5. 如下图,右击“workplace.properties”文件,选择“属性”

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

6. 如下图,在出现界面点击“高级”

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

7. 在出现的高级界面找到“content-encoding”属性为“ISO-8859-1”,如下图

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

8. 再右击“workplace.properties”,点击“编辑源代码”选项,复制粘贴如下代码内容,保存并关闭

# TestNews nodes 用于在“新建”向导中显示的名称 @b@fileicon.account=用户账号类型@b@#新建“用户账号类型”类型时在对话框窗口显示的标题内容@b@title.newsaccount=新增用户账号@b@#编辑器中相应标签元素显示的名称,以下面编辑用户账号内容是可看见效果@b@label.Account.Title=标题 @b@label.Account.Text=内容

9. 如下图,在account的formatters目录下新建两个JSP模板,分别为“detail.jsp”和“side.jsp”

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

detail.jsp代码内容如下所示

<%@page buffer="none" session="false" taglibs="c,cms,fmt" %>@b@<fmt:setLocale value="${cms.locale}" />@b@<cms:formatter var="content" val="value">@b@    <div class="view-article">@b@        <div class="content">@b@            ${value.Title}<br/>@b@            <!-- 显示文本框内容 -->@b@            ${value.Text}@b@        </div>                                        @b@    </div>@b@</cms:formatter>

side.jsp内容如下

<%@page buffer="none" session="false" taglibs="c,cms,fmt" %>@b@<fmt:setLocale value="${cms.locale}" />@b@<fmt:bundle basename="org/opencms/account/messages">@b@    <cms:formatter var="content" val="value">@b@        <div class="view-article">@b@            <div class="content">@b@                ${label.Account.Title}<br/>@b@                ${label.Account.Text} @b@            </div>                                        @b@        </div>@b@    </cms:formatter>@b@</fmt:bundle>

10. 在account目录下的schemas节点,新建一个account.xsd的配置文件,如下图所示

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

account.xsd的配置文件内容如下所示,直接复制粘贴内容

 <?xml version="1.0"?>@b@<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"@b@    elementFormDefault="qualified"> @b@@b@    <xsd:include schemaLocation="opencms://opencms-xmlcontent.xsd" />@b@    <!--此处name必须以 "s" 结尾,且type以 "OpenCms" 开头 -->@b@    <xsd:element name="Accounts" type="OpenCmsAccounts" /> @b@@b@    <xsd:complexType name="OpenCmsAccounts">@b@        <xsd:sequence>@b@            <xsd:element name="Account" type="OpenCmsAccount"@b@                minOccurs="0" maxOccurs="unbounded" />@b@        </xsd:sequence>@b@    </xsd:complexType> @b@@b@    <xsd:complexType name="OpenCmsAccount">@b@        <xsd:sequence>@b@            <!--本自定义类型包含的内容,Title标题,Text文本框 -->@b@            <xsd:element name="Title" type="OpenCmsString" />@b@            <xsd:element name="Text" type="OpenCmsHtml" /> @b@        </xsd:sequence>@b@        <xsd:attribute name="language" type="OpenCmsLocale" use="required" />@b@    </xsd:complexType> @b@@b@    <xsd:annotation>@b@        <xsd:appinfo>@b@            <!-- 绑定的properties文件 -->@b@            <resourcebundle name="org.opencms.account.workplace" />@b@            <mappings>@b@                <mapping element="Title" mapto="property:Title" /> @b@            </mappings>@b@            <layouts>@b@                <!-- 配置上面的文本框 -->@b@                <layout element="Text" widget="HtmlWidget" />@b@            </layouts>@b@            <validationrules />@b@            <defaults />@b@            <relations />@b@            <!-- 布局标签 -->@b@            <formatters>@b@                <!-- side.jsp 为在侧边的模板,定义宽高等属性 -->@b@                <formatter minwidth="150" maxwidth="250"@b@                    uri="/system/modules/org.opencms.account/formatters/side.jsp" />@b@                <!-- detail.jsp 为在body中间显示内容的模板,定义宽高等属性 -->@b@                <formatter minwidth="400"@b@                    uri="/system/modules/org.opencms.account/formatters/detail.jsp" />@b@            </formatters>@b@        </xsd:appinfo>@b@    </xsd:annotation> @b@    @b@</xsd:schema>

11. 在opencms项目部署路径下面找到opencms-modules.xml文件(/opencms/WEB-INF/config下),如下图所示

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

opencms-modules.xml中复制如下内容到modules节点下

 <module>@b@            <name>org.opencms.account</name>@b@            <nicename><![CDATA[用户账号模块]]></nicename>@b@            <class/>@b@            <description/>@b@            <version>0.1</version>@b@            <authorname/>@b@            <authoremail/>@b@            <datecreated/>@b@            <userinstalled/>@b@            <dateinstalled/>@b@            <dependencies/>@b@            <exportpoints>@b@                <exportpoint uri="/system/modules/org.opencms.account/classes/" destination="WEB-INF/classes/"/>@b@            </exportpoints>@b@            <resources>@b@                <resource uri="/system/modules/org.opencms.account/"/>@b@            </resources>@b@            <parameters/>@b@             @b@            <resourcetypes>@b@        <!-- type中的id为唯一,为不和系统的冲突,最好在1000以上,且相互间不能冲突 -->@b@                <type class="org.opencms.file.types.CmsResourceTypeXmlContent" name="account" id="7004">@b@                    <param name="schema">/system/modules/org.opencms.account/schemas/account.xsd</param>@b@                </type>@b@            </resourcetypes>@b@            <explorertypes>@b@        <!-- fileicon-自定义类型的文字(workplace.properties文件中读取) icon-自定义类型的图标 -->@b@                <explorertype name="account" key="fileicon.account" icon="xwood_icon16X16.ico" reference="xmlcontent">@b@                    <newresource page="structurecontent" uri="newresource_xmlcontent.jsp?newresourcetype=account" order="7004" autosetnavigation="false" autosettitle="false"/>@b@                   <!-- 权限控制 -->@b@                    <accesscontrol>@b@            <!-- 给予 Administrators(管理员)组,Projectmanagers(项目管理者)组,Users(用户组) 读写的全权限 -->@b@                        <accessentry principal="GROUP.Administrators" permissions="+r+v+w+c"/>@b@                        <accessentry principal="GROUP.Projectmanagers" permissions="+r+v+w+c"/>@b@                        <accessentry principal="GROUP.Users" permissions="+r+v+w+c"/>@b@                    </accesscontrol>@b@                </explorertype>@b@            </explorertypes>@b@             @b@        </module>

复制一个16*16的图标到文件类型资源路径(/opencms/resources/filetypes)下,如下图xwood_icon16X16.ico(对应opencms-modules.xml中的icon属性值)

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)

12. 所有配置完成,我们测试下效果,如下所示

在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)


在OpenCms系统中如何自定义数据类型结构化内容(图文步骤说明)