我正在努力定制 liferay 的日历 portlet,并为此创建了一个钩子(Hook)。
我想直接在列表页面本身中显示与日历事件关联的所有“相关 Assets ”,其中显示所有事件,而不是事件的详细信息 View 页面。
目前liferay仅在我们点击事件查看该事件的详细信息时才显示“相关 Assets ”。
有人可以帮助我吗?
环境:Liferay 6.1
非常感谢 萨布丽娜
最佳答案
我假设您已经拥有 liferay 的源代码并且知道如何创建钩子(Hook)。
您要修改的 JSP 将位于此路径中:
portal-web/docroot/html/portlet/calendar
以下是帮助您解决疑问的一些步骤:
- 您需要修改
event_iterator.jspf
:row.addText(event.getTitle(), rowURL);
您必须调整以下取自
view_event.jsp
的代码在event_iterator.jspf
.<% AssetEntry layoutAssetEntry = AssetEntryLocalServiceUtil.getEntry(CalEvent.class.getName(), event.getEventId()); %> <%-- <liferay-util:buffer> is a tag which stores all that is written inside its body in a single variable string, in this case "relatedAssetsLinksBuffer" --%> <liferay-util:buffer var="relatedAssetsLinksBuffer"> <c:if test="<%= enableRelatedAssets %>"> <%=event.getTitle() %> <div class="entry-links"> <liferay-ui:asset-links assetEntryId="<%= layoutAssetEntry.getEntryId() %>" /> </div> </c:if> </liferay-util:buffer>
现在第 1 步中的行变为:
row.addText(relatedAssetsLinksBuffer, rowURL);
我还没有尝试过这个,但我认为它会起作用或者至少会为您解决查询提供一些帮助。
Hooks 提示(将来可能有用): Liferay 遵循存储其 JSP 的约定,因此对于自定义 jsps Hook (即为修改 liferay 的 JSP 创建的 Hook ),您只需搜索该特定 JSP 并修改它。
例如:您想要修改日历 portlet 的第一页。因此,liferay portlet 的首页始终是 view.jsp,位于与 portlet 名称同名的文件夹中,在本例中为“Calendar”,view.jsp 将包含一些标签,如 <%@ include />
或<liferay-util:include />
其中将包含其他文件来显示内容。因此,您始终可以从 view.jsp 开始并继续前进。顺便说一句,JSP 的名称大多数时候也是不言自明的。
希望这有帮助。
关于calendar - Liferay:在列表页面中显示日历事件的相关资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638806/