内容类型二次开发

1.内容类型扩展

       内容是ZCMS的核心,基于满足不同内容类型的展示方式,ZCMS提供了满足不同内容类型进行快速扩展的方式,继承通用内容功能,包括创建、修改、查询、删除、发布、置顶及工作流等。

  下面是通过添加图书插件为例介绍内容类型的扩展开发基本内容。

   1.1 添加内容类型

     (1). 基于当前的ZCContent表不能满足图书通用的属性,需要创建其扩展表ZCBooksBody

01

      (2) 创建一个插件类,如下:

   3)创建相应的插件,指定引用的Plugin Class,依赖的插件,如下图:

02

  (4)创建相应的内容类型扩展类型类BooksContentType.javaBooksContent.java继承AbsractContentType.java抽象类。AbsractContentType.java抽象类实现了内容类型需要的基本功能,继承它会大大加快程序员开发效率。相应代码展示如下图所示:

  (5)图书插件中注册相应的图书类型,如下图所示:

003

  (6)图书内容类型完成之后,切换菜单到管理工作台,新建栏目会出现如下图所示:

04

  上图说明内容类型创建已经初步完成。

  (7)切换菜单到文档工作台。由BooksContentType.java定义的图书类型展示列表页,快速编辑页面,以及新建内容页面等后,新建图书内容展示如下图所示:

05

  默认支持所有内容的基本功能,包括新建、修改、删除、发布、待发布、置顶及推荐等功能。

 

2.创建内容类型的相关模板类型(列表页和详细页模板)

  (1创建图书内容类型列表页模板继承AbstractCatalogListTemplate,如下图所示

  (2创建图书内容类型详细页模板继承AbstractDetailTemplate,如下图所示:

3)打开插件配置文件,切换到Extends标签页,添加扩展服务项,如下图所示:

06

  (4)创建完列表页及详细页模板类型后即可使用这两个模板类型创建相应的模板,只需要在模板第一行使用<z:config type=BookList name=图书列表 />标签来定义列表页模板类型。详细页模板可以使用<z:config type=BookDetail name=图书详细页模板 />,可通过定义BooksDetailTemplate中的getContext方法初始化上下文不同变量。

  列表页可以通过内容循环标签<cms:content>输出内容列表:

       详细页可以通过${BookDetail.Title}取得相应的标题,其它属性也可以通过类似的方式取其相应的值。

       至此,图书内容类型的扩展已经完成。我们可以在后台建立此类型的栏目,对栏目数据进行维护,支持包括全文检索、工作流、扩展模型、内容评论等在内的内容通用操作。

 

3.内容类型相关参数设置

  IContent.java接口方法说明:

方法名

参数

返回值类型

说明

archive

 

void

归档内容

backup

 

String

备份内容

cancelTop

 

void

取消内容置顶状态

clone

 

 

克隆内容

copy

ZCCatalog:目标栏目

Int:复制类型

IContent

复制内容到指定栏目

delete

 

void

删除内容

getAbsoluteLink

String:发布平台ID

String

获取内容绝对地址(http://)

getAddUser

 

String

获取内容添加人

getAuthor

 

String

获取内容作者

getCatalogID

 

long

获取内容所属栏目ID

getContentDAO

 

ZCContent

获取ZCContent实例

getContentTypeID

 

String

获取内容类型ID

getExtendDAO

 

DAO<?>

获取内容扩展表DAO实例

getField

String:字段名

Object

获取字段(包括扩展表里的字段)值

getFields

 

Mapx

获取所有的字段值

getID

 

long

获取内容ID

getIndexingText

 

String

返回创建索引使用的文本

getLogoFile

 

String

获取内容引导图相对地址

getOperator

 

String

获取内容操作人

getPreviewLink

 

String

获取内容预览路径

getProp

String:属性名

Object

获取扩展属性的值

getProperties

 

Mapx

获取所有的扩展属性值

getPublishDate

 

Date

获取内容发布时间

getRelativeLink

 

String

获取内容静态页的相对地址

getResources

 

DAO<ZCResources>

返回内容关联的资源集合

getSiteID

 

long

获取内容所属站点ID

getSourceContent

 

IContent

如果是映射/链接内容则返回源内容实例

getStatus

 

long

获取内容状态

getTitle

 

String

获取内容标题

getValues

 

Mapx

获取所有的扩展属性和字段值

insert

 

long

插入内容

isCheckPriv

 

boolean

是否需要验证权限

isDataLoaded

 

boolean

内容数据是否已经加载

isExternalLink

 

boolean

内容是否链接到外部URL

isLink

 

boolean

内容是否链接到内部内容

isMapping

 

boolean

内容是否是其他内容的同步映射

loadWithDAO

 

void

从ZCContent和扩展DAO加载数据,如果扩展DAO为null则自动去数据库查找

loadWithID

 

void

通过内容ID加载数据

move

ZCCatalog:目标栏目

void

移动内容到指定栏目

offline

 

void

下线内容

publish

 

void

发布内容

recommendToBlock

 

void

推荐(撤销推荐)到区块

save

 

void

 

保存内容

setCheckPriv

bolean:是否校验

 

设置权限检查标识

setField

 

String:字段名

Object:字段值

void

设置字段(包括扩展表里的字段)值

 

setFields

Mapx

Void

批量设置字段值

setOperator

 

void

设置内容操作人

setProp

String:属性名

Object:属性值

void

设置扩展属性的值

setTop

 

void

将内容设为置顶

setTransaction

 

void

设置内容操作事务

 

 

  IContentType.java接口方法说明:

方法名

返回值类型

 

getID

String

返回内容类型唯一标识

getName

String

返回内容类型名称

createExtendDAOInstance

DAO<?>

创建扩展数据表表实例

hasExtendTable

Boolean

是否含有扩展数据表

getCatalogName

String

返回内容类型栏目类型名称

getCatalogIcon

String

返回内容类型栏目列表中的图标

getDetailIcon

String

返回内容记录图标

getListURL

String

返回文档工作台内容列表地址

getQuickEditorURL

String

返回内容快速编辑页面地址

getDetailPreviewURL

String

返回内容预览地址

getDetailInteractiveURL

String

返回内容动态模板模式地址

getSelectorURL

String

返回内容选择页面地址

getEditorURL

String

返回内容编辑页面地址

getConfigURLList

String[]

获取管理工作台的配置地址列表

loadContent(long id)

IContent

通过ID获取内容实例

loadContent(ZCContent content, DAO<?> extendDAO)

IContent

通过内容DAO实例获取内容实例

getCount(Q wherePart)

int

根据条件获取内容数量,条件wherePart必须以where开头

loadContents(int pageSize, int pageIndex, Q condition)

DataTable

分页获取指定条件的内容集合

loadDetetedContents(int pageSize, int pageIndex, Q condition)

DataTable

分页获取指定条件的已删除内容集合

newContent

IContent

创建一个内容实例

getListTemplateTypeID

String

返回内容类型适用的列表页模板ID

getDetailTemplateTypeID

String

返回内容类型适用的详细页模板ID

clean(long catalogid, Transaction trans)

void

清空指定栏目下的内容数据

archives

void

内容归档

offLine

void

内容下线

merge(ZCCatalog catalog, ZCCatalog targetCatalog, Transaction trans)

void

栏目合并

getDataImpIdKey

String

提供数据导入存放ID对应关系的map的key值

canMix

boolean

是否允许与其他栏目混杂,如果为false则:1.禁止本内容类型栏目下有其他内容类型的栏目,2.本内容类型要么是一级栏目,要么是其他同类型栏目的子栏目

setLongTimeTask

void

为内容清空等操作提供进度任务对象