【发布时间】:2023-07-23 13:00:02
【问题描述】:
有没有办法在 portlet 插件 war 文件中包含 Liferay 文档或 Web 内容结构和模板,并让它们像标准的一样可供用户使用?
用例是您正在编写一个利用您提供的自定义文档库结构的 portlet。但是您不想将此结构作为具有自己的安装过程的单独事物分发(例如仅为该结构提供 LAR),您只希望您的插件在安装时使自定义结构可用。
【问题讨论】:
有没有办法在 portlet 插件 war 文件中包含 Liferay 文档或 Web 内容结构和模板,并让它们像标准的一样可供用户使用?
用例是您正在编写一个利用您提供的自定义文档库结构的 portlet。但是您不想将此结构作为具有自己的安装过程的单独事物分发(例如仅为该结构提供 LAR),您只希望您的插件在安装时使自定义结构可用。
【问题讨论】:
您可以通过将 portal.properties 文件添加到 portlet 的 WEB-INF/classes 目录来实现您的目标。该文件应包含以下行:
application.startup.events=com.yourcompany.whatever.YourCustomStartupAction
此自定义启动操作应该是从 com.liferay.portal.kernel.events.SimpleAction 扩展的类。在其中,您将能够在您的 portlet 启动时利用所有 Liferay 服务工具在 Liferay 中执行操作。您需要用于使用 Liferay 文档库的类是 DLAppLocalServiceUtil。这个 util 类具有处理文档库中文件/文件夹的所有必要方法。
对于网络内容相关的东西,例如结构、模板和文章,只需使用 JournalStructureLocalServiceUtil、JournalTemplateLocalServiceUtil 和 JournalArticleLocalServiceUtil。
【讨论】:
我希望你的问题是正确的;)
您可以在部署 portlet 时通过 DLFolderService 创建文件夹结构。
要在服务器启动时运行一个方法,你必须使用我认为的 CustomAction,检查一下:here
【讨论】: