opencms自定义文章类型

来源:互联网 发布:天猫数据平台啥样 编辑:程序博客网 时间:2024/05/16 15:38

opencms自定义文章类型

第一步:创建模块,使用管理员视图添加自定义模块

第二步:在新增模块schemas目录下新增xsd文件,文件内容如下:
/system/modules/com.mysite.example/schemas/article.xsd

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
 <xsd:include schemaLocation="opencms://opencms-xmlcontent.xsd" />
 <xsd:include schemaLocation="opencms://system/modules/com.mysite.example/schemas/basic.xsd" />
 <xsd:include schemaLocation="opencms://system/modules/com.mysite.example/schemas/content.xsd" />

 <xsd:element name="ArticleTypes" type="OpenCmsArticleTypes" />
 <xsd:complexType name="OpenCmsArticleTypes">
  <xsd:sequence>
   <xsd:element name="ArticleType" type="OpenCmsArticleType" minOccurs="0" maxOccurs="unbounded" />
  </xsd:sequence>
 </xsd:complexType>
 <xsd:complexType name="OpenCmsArticleType">
  <xsd:sequence>
   <xsd:element name="basic" type="OpenCmsBasicType" />
   <xsd:element name="content" type="OpenCmsContentType" minOccurs="1" maxOccurs="unbounded" />
  </xsd:sequence>
  <xsd:attribute name="language" type="OpenCmsLocale" use="optional" />
 </xsd:complexType>
 <xsd:annotation>
  <xsd:appinfo>
   <resourcebundle name="com.mysite.example.workplace" />
   <mappings>
    <mapping element="basic/title" mapto="property:Title" />
    <mapping element="basic/datereleased" mapto="attribute:datereleased" />
    <mapping element="basic/keywords" mapto="property:Keywords" />
    <mapping element="basic/summary" mapto="property:Description" />
   </mappings>
   <defaults>
    <default element="basic/datereleased" value="${currenttime}" />
    <default element="basic/author" value="${currentuser.fullname}" />
   </defaults>
   <layouts></layouts>
  </xsd:appinfo>
 </xsd:annotation>
</xsd:schema>

/system/modules/com.mysite.example/schemas/basic.xsd

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
 <xsd:include schemaLocation="opencms://opencms-xmlcontent.xsd" />

 <xsd:element name="BasicTypes" type="OpenCmsBasicTypes" />
 <xsd:complexType name="OpenCmsBasicTypes">
  <xsd:sequence>
   <xsd:element name="BasicType" type="OpenCmsBasicType" minOccurs="0" maxOccurs="unbounded" />
  </xsd:sequence>
 </xsd:complexType>
 <xsd:complexType name="OpenCmsBasicType">
  <xsd:sequence>
   <xsd:element name="title" type="OpenCmsString" />
   <xsd:element name="keywords" type="OpenCmsString" />
   <xsd:element name="tags" type="OpenCmsString" />
   <xsd:element name="author" type="OpenCmsString" />
   <xsd:element name="datereleased" type="OpenCmsDateTime" />
   <xsd:element name="source" type="OpenCmsString" />
   <xsd:element name="summary" type="OpenCmsString" />
  </xsd:sequence>
  <xsd:attribute name="language" type="OpenCmsLocale" use="optional" />
 </xsd:complexType>
 <xsd:annotation>
  <xsd:appinfo>
   <resourcebundle name="com.mysite.example.workplace" />
   <validationrules>
    <rule element="title" regex="^.*[^S]+.*$" message="完整标题不允许为空!" />
    <rule element="keywords" regex="^.*[^S]+.*$" message="关键字不允许为空!" />
    <rule element="tag_cn" regex="^.*[^S]+.*$" message="标签不允许为空!" />
    <rule element="summary_cn" regex="^.*[^S]+.*$" message="摘要不允许为空!" />
   </validationrules>
   <layouts>
    <layout element="summary" widget="TextareaWidget" />
    <layout element="source" widget="ComboWidget" configuration="选择值一" />
   </layouts>
  </xsd:appinfo>
 </xsd:annotation>
</xsd:schema>

/system/modules/com.mysite.example/schemas/content.xsd

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
 <xsd:include schemaLocation="opencms://opencms-xmlcontent.xsd" />

 <xsd:element name="ContentTypes" type="OpenCmsContentTypes" />
 <xsd:complexType name="OpenCmsContentTypes">
  <xsd:sequence>
   <xsd:element name="ContentType" type="OpenCmsContentType" minOccurs="0" maxOccurs="unbounded" />
  </xsd:sequence>
 </xsd:complexType>
 <xsd:complexType name="OpenCmsContentType">
  <xsd:sequence>
   <xsd:element name="title" type="OpenCmsString" />
   <xsd:element name="content" type="OpenCmsHtml" />
  </xsd:sequence>
  <xsd:attribute name="language" type="OpenCmsLocale" use="optional" />
 </xsd:complexType>
 <xsd:annotation>
  <xsd:appinfo>
   <resourcebundle name="com.mysite.example.workplace" />
   <layouts>
    <layout element="content" widget="org.opencms.widgets.CmsHtmlWidget" configuration="formatselect,link,anchor,source,imagegallery,downloadgallery,linkgallery,htmlgallery,tablegallery,image" />
   </layouts>
  </xsd:appinfo>
 </xsd:annotation>
</xsd:schema>

第三步:修改opencms-modules.xml

<parameters />
<resourcetypes>
 <type class="org.opencms.file.types.CmsResourceTypeXmlContent" name="article" id="80001">
  <param name="schema">/system/modules/com.mysite.example/schemas/article.xsd</param>
 </type>
</resourcetypes>
<explorertypes>
 <explorertype name="article" key="fileicon.article" icon="page.gif" reference="xmlcontent">
  <newresource page="structurecontent" uri="newresource_xmlcontent.jsp?newresourcetype=article" order="80001" autosetnavigation="false" autosettitle="false" />
  <accesscontrol>
   <accessentry principal="ROLE.WORKPLACE_USER" permissions="+r+v+w+c" />
  </accesscontrol>
 </explorertype>
</explorertypes>

0 0