2

我正在定制liferay 的日历portlet 并为此创建了一个钩子。

我想直接在列表页面本身中显示与日历事件关联的所有“相关资产”,其中显示所有事件,而不是事件的详细视图页面。

目前 liferay 仅在我们单击事件以查看该事件的详细信息时才会显示“相关资产”。

在此处输入图像描述

谁能帮我?

环境:Liferay 6.1

非常感谢萨布丽娜

4

1 回答 1

2

我假设你已经有了 liferay 的源代码并且你知道如何创建一个钩子。

您将要修改的 JSP 将位于此路径中:

portal-web/docroot/html/portlet/calendar

因此,这里有一些步骤可以帮助您解决查询:

  1. 您需要修改event_iterator.jspfrow.addText(event.getTitle(), rowURL);
  2. 您必须调整从view_event.jspin 中获取的以下代码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>
    
  3. 现在步骤 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 的名称在大多数情况下也是不言自明的。

希望这可以帮助。

于 2012-05-19T06:00:28.903 回答