我正在定制liferay 的日历portlet 并为此创建了一个钩子。
我想直接在列表页面本身中显示与日历事件关联的所有“相关资产”,其中显示所有事件,而不是事件的详细视图页面。
目前 liferay 仅在我们单击事件以查看该事件的详细信息时才会显示“相关资产”。
谁能帮我?
环境:Liferay 6.1
非常感谢萨布丽娜
我假设你已经有了 liferay 的源代码并且你知道如何创建一个钩子。
您将要修改的 JSP 将位于此路径中:
portal-web/docroot/html/portlet/calendar
因此,这里有一些步骤可以帮助您解决查询:
event_iterator.jspf
:row.addText(event.getTitle(), rowURL);
您必须调整从view_event.jsp
in 中获取的以下代码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 时遵循约定,因此对于 custom-jsps Hook(即为修改 liferay 的 JSP 而创建的钩子),您只需要搜索该特定 JSP 并修改它。
例如:您想修改日历 portlet 的第一页。所以 liferay portlet 的第一个页面总是 view.jsp 位于与 portlet-name 在本例中为“日历”同名的文件夹中,并且 view.jsp 将包含一些标签,例如<%@ include />
或<liferay-util:include />
包含其他文件以显示内容。因此,您始终可以从 view.jsp 开始并继续前进。顺便说一下,JSP 的名称在大多数情况下也是不言自明的。
希望这可以帮助。