我想在 Liferay 6.1.20 EE 中创建我自己的默认文档类型和元数据集。
目前,Liferay实现创建了自己的默认文档类型和元数据集,例如合同,在线培训等,在AddDefaultDocumentLibraryStructuresAction类中创建,该类是从AddDefaultDataAction类调用的,这是一个启动操作。
如Liferay Forum post中所述,如果我们要关闭此创建过程,我们需要在AddDefaultDataAction中注释相关行,或者我们可以在其中添加自定义AddDefaultDataAction application.startup.events 覆盖默认值。
可以使用 hook 来覆盖application.startup.events吗?如果是,我们如何覆盖AddDefaultDataAction类,因为它是 portal-impl.jar 类,我们无法从钩子访问它?如果没有,是否应该使用 ext插件来达到此目的?或者是否有更直接的方式来实现我自己的默认文档类型和元数据集?
答案 0 :(得分:6)
如果您查看portal.properties
中的默认配置,则会显示
#
# Application startup event that runs once for every web site instance of
# the portal that initializes.
#
application.startup.events=com.liferay.portal.events.AddDefaultDataAction,\
com.liferay.portal.events.AppStartupAction,\
com.liferay.portal.events.ChannelHubAppStartupAction
因此,只需在com.liferay.portal.events.AddDefaultDataAction
中说明其他内容,即可从此列表中删除默认portal-ext.properties
:
application.startup.events=com.liferay.portal.events.AppStartupAction,\
com.liferay.portal.events.ChannelHubAppStartupAction
如果要对所有新安装执行此操作,则必须在第一次启动实例之前添加此更改。或者你应该编写一个开箱即用的ext插件。你为什么需要分机?一个钩子只能添加另一个StartupAction,不能改变现有的。 ext 可以更改或删除现有的启动操作或覆盖其代码。
在ext插件中,您还可以实现
application.startup.events=com.mariaioannidou.MyCustomAddDefaultDataAction,\
com.liferay.portal.events.AppStartupAction,\
com.liferay.portal.events.ChannelHubAppStartupAction
并实现MyCustomAddDefaultDataAction
做与默认操作相同的操作,无法创建文档类型。
另一方面,钩子可以找到您不想要的所有标准文档类型,检查它们是否确实未使用,然后删除它们。如您所见,AddDefaultDataAction
不仅仅是添加文档类型,因此您可能希望操作中的其余代码能够运行。
另一个替代方法是编写一个实际更改com.liferay.portal.events.AddDefaultDataAction
实现的ext插件,但是你再次使用ext - 如果你在第一次启动之前没有在每个安装中部署它,你将会无论如何最终得到默认内容,你可能想要一些代码自动删除它。
我的个人建议是使用钩子,删除不需要的文档类型(如果它们未被使用) - 原因是: