使

  栏目需要有相关设置,但栏目本身的已有配置不能满足现有需求,如栏目下的内容是否需要审核、是否开启评论等,可在内容入库时或生成静态页时获取相应配置的值,根据配置的结果来选择入库时的数据状态或静态页中是否包含评论的界面。通过栏目的扩展配置结合相关的业务功能实现栏目内容相关功能的定制。

 

  相关数据结构

  ZCCatalog表中的ConfigProps字段,用于保存栏目的扩展,通过键值对的方式保存多个,即可保存多个栏目配置。如CronPublishEnable=N

 

  涉及的类说明

  扩展点com.zving.contentcore.CatalogConfigUI,该扩展点是栏目扩展配置的UI扩展点。

 

  详

  第一步:在相应的插件配置中新增一个扩展行为,填写相关的信息,ID可使用Class的包路径+类名(com.zving.test.TestCatalogExtendUIAction),便于识别。选择扩展点com.zving.contentcore.CatalogConfigUI(需当前插件依赖Contentcore插件)点击Class可弹出新建Class窗口,默认继承ZhtmlExtentUI类,定义包名 类名(com.zving.testTestCatalogExtendUIAction),确定保存。

 

  第二步:进入com.zving.test. TestCatalogExtendUIAction类中,可看到该类实现了两个方法,代码如下            

 

  默认情况下 isUsable方法返回false,表示该扩展性为不被调用,若需要其生效必须将返回值改为true;然后修改execute中的方法,其中参数context为栏目配置页面的上下文,方法第一行使用include包含了test/ testCatalogExtend.zhtml该路径为相对栏目扩展界面的相对路径,另外从context中可以获取到Request对象,该对象为前端请求参数的键值对集合,可获取请求中的参数,也可以根据业务需要放入新的参数,详细方法见context.getRequest().put("TestKey","TestValue");其中新建的被包含页面test/testCatalogExtend.zhtml代码如下:

                                     

  代码中可见页面中的所有写法与普通zhtml页面基本一致,但是不需要再包含html必要的页面元素,可在页面中通过${xxx}获取Request中的内容。包括Request中原本的值和在TestCatalogExtendUIActionexecute方法中放入的值。部分值填写之后,后台会根据相应的键值对组合,生成一个键值对的文本,自动对应相应的键和值,不需要用户添加保存逻辑,页面初始化时也会根据保存的文本解析成相应的键值对,用于页面的显示。

  效果如图:

 

  扩展完成后,可通过CatalogUtil.getProperty(catalogID,proertyID,recursion)来获取相应的配置值,第一个参数catalogID为栏目的IDpropertyID为扩展参数的ID即前面提到的keyrecursionboolean,用于标记获取参数时时候需要迭代获取,获取栏目配置时一般false即可。另外通过PropertyUtil.parse(CatalogUtil.getDao(catalogID).getConfigProps())可获取到栏目配置的map,可通过map以及相应的键值来获取到对应的扩展配置值,或PropertyUtil.getValue(CatalogUtil.getDao(catalogID).getConfigProps(),    propertyIDORKey)。