首页 > 解决方案 > Liferay 7 Eclipse IDE 覆盖默认类别行为

问题描述

我需要创建一个 portlet 以更改 Liferay 7 中的默认类别行为/界面。
我的目标是复制资产类别表,扩展和更改其列,并使用这个新表作为 Liferay 后端中类别的参考。

因此,我的 portlet 必须更新三个关键点:

  1. 用于在 DB 上创建/更新类别表的类别组织 UI。我能够创建一个新的 Liferay 模块项目(panel-app模板),它可以从侧面菜单呈现 UI 后端界面并与数据库交互。
  2. 覆盖 Web 内容属性面板中的默认类别选择面板(元数据 > 类别选择)。我可以创建一个新的 Liferay 模块项目片段来覆盖 com.liferay.asset.categories.selector.web,但是我注意到我只能选择一个文件路径(例如META-INF/resources/view.jsp
  3. 覆盖默认资产发布者过滤器行为以允许我的自定义类别选择。我还没有研究过这一点。

我目前停留在第 2 点,因为在创建一个新的 Liferay 模块项目片段后,将目标主机 OSGI Bundle 设置为com.liferay.asset.categories.selector.web(我认为这是正确的,如果它请纠正我不是)并将覆盖的文件选择为META-INF/resources/view.jsp,我无法继续重绘类别选择界面。

这是我的尝试:

  1. 更新代码view.jsp(例如添加一些文本字符串)我可以在 portlet 中正确地看到它们。
  2. 删除/注释view.jsp中的所有代码时显示错误: 资产类别选择器暂时不可用
  3. 在主 portlet 向导( META-INF/resources/view.jspinit.jspinit-ext.jsp )中选择所有三个可被覆盖的文件并更新view.jsp(如第一个示例)在 portlet 中没有任何反应

下面的一些截图:

情况1 在此处输入图像描述 在此处输入图像描述

案例2 在此处输入图像描述 在此处输入图像描述

案例3 在此处输入图像描述 在此处输入图像描述

标签: liferayliferay-7liferay-ide

解决方案


我需要创建一个 portlet 以更改 Liferay 7 中的默认类别行为/界面。我的目标是复制资产类别表,扩展和更改其列,并使用这个新表作为 Liferay 后端中类别的参考。

仅此一项听起来像是一项艰巨的任务,比适合 stackoverflow 问题的任务更大。

AssetCategories 用于每种内容类型,例如 WebContent、博客文章、留言板帖子、Wiki 页面、知识库文章等。用您自己的实现替换这样一个重要的组件会安全地破坏您的下一次升级体验,因为在那里您必须再次执行此操作,将您的代码带到下一个版本中将进行的任何更改。而这个“升级”包括安全补丁。

总的来说,您的前提对我来说听起来像是一个xy 问题,我宁愿建议您退出您的预期解决方案并寻找其他选项来满足您的业务需求。肯定有一些。

我的建议:与其删除一个非常核心和通用的组件,以业务特定的方式重新实现它,不如向平台添加一些东西。如果您需要不同于 Asset Publisher 提供的过滤:构建您自己的 Asset Publisher 并在那里实施业务特定规则。或者重新考虑以与当前组织方式不同的方式组织内容。

除非您已经是 Liferay Core 开发人员并且正在寻求有关如何更改下一个版本的实现的提示。但是您在这里的问题历史看起来不像。


推荐阅读