通常liferay
具有ADD
显示可用 portlet 的选项。
我希望它们出现在下拉列表中,并且应该在自定义插件 portlet 中,所以我在 API 中搜索哪个方法正在检索可用的 portlet,但我没有找到。
请帮助我,因为我坚持这一点,并且从下拉列表中选择应该将 portlet 添加到页面中。
“添加...更多”对话框由停靠栏 portlet 显示。你可以在 Liferay 的源码中找到这部分 UI 部分的实现,该源码portal-web/docroot/html/portlet/dockbar/add_panel.jsp
也包含view_category.jsp
在同一目录中。
虽然这个 jsp 代码不是最漂亮的,但您会很容易发现它PortletLocalService
是您找到相关信息的地方,以及如何按类别访问 portlet 列表的实际示例,根据当前用户的区域设置对它们进行排序等.
当您要求更具体的指针时:add_panel.jsp
您可以找到:
for (PortletCategory curPortletCategory : categories) {
if (curPortletCategory.isHidden()) {
continue;
}
request.setAttribute(WebKeys.PORTLET_CATEGORY, curPortletCategory);
request.setAttribute(WebKeys.PORTLET_CATEGORY_INDEX, String.valueOf(portletCategoryIndex));
%>
<liferay-util:include page="/html/portlet/dockbar/view_category.jsp" />
<%
portletCategoryIndex++;
}
%>
和一些摘录view_category.jsp
:
<%
PortletCategory portletCategory = (PortletCategory)request.getAttribute(WebKeys.PORTLET_CATEGORY);
int portletCategoryIndex = GetterUtil.getInteger((String)request.getAttribute(WebKeys.PORTLET_CATEGORY_INDEX));
// ...
Set<String> portletIds = portletCategory.getPortletIds();
// ...
for (String portletId : portletIds) {
Portlet portlet = PortletLocalServiceUtil.getPortletById(user.getCompanyId(), portletId);
if ((portlet != null) && PortletPermissionUtil.contains(permissionChecker, layout, portlet, ActionKeys.ADD_TO_PAGE)) {
portlets.add(portlet);
// ... and so on
希望这段摘录有所帮助。请参阅文件的其余部分,了解您可以对结果列表实际执行的操作。此外,如果您需要更多详细信息, Portlet的界面可能会有所帮助。