我想创建一个Liferay挂钩,在服务器启动时创建公共页面。
我已经将钩子绑定到服务器启动。但是我在创建页面时遇到了一些问题。 也许我对用户,群组,社区等有误。(请记住,这个钩子无法访问themeDisplay。)
Company company = CompanyLocalServiceUtil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY_DEFAULT_WEB_ID));
long companyId = company.getCompanyId();
User defaultUser = UserLocalServiceUtil.getDefaultUser(companyId);
long userId = defaultUser.getUserId();
long groupId = GroupLocalServiceUtil.getCompanyGroup(PortalUtil.getDefaultCompanyId()).getGroupId();
boolean privateLayout = false;
long parentLayoutId = LayoutConstants.DEFAULT_PARENT_LAYOUT_ID;
String name = page.getName();
String title = null;
String description = null;
String type = LayoutConstants.TYPE_PORTLET;
boolean hidden = false;
String friendlyUrl = "/test";
ServiceContext serviceContext = new ServiceContext();
serviceContext.setScopeGroupId(groupId);
LayoutLocalServiceUtil.addLayout(userId, groupId, privateLayout, parentLayoutId, name, title, description, type, hidden, friendlyUrl, serviceContext);
LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) layout.getLayoutType();
layoutTypePortlet.setLayoutTemplateId(userId, page.getLayoutId());
LayoutLocalServiceUtil.updateLayout(layout.getGroupId(), layout.isPrivateLayout(), layout.getLayoutId(), layout.getTypeSettings());
页面永远不会列出......
答案 0 :(得分:0)
你可能想检查那个旧的sevencogs钩子演示代码的剩余部分 - James Falkner has blogged about它并复活了一些代码。它可能不适用于当前版本,但如果有任何API更改,则它们会轻微。
特别注意"添加布局(页面)到网站"该文章中的段落,并将其与您的代码进行比较。
还要注意"在服务器启动"意味着你必须注意不要两次创建同一页面。它发生在每个服务器启动时 - 或实际发生在您编写的挂钩的每个部署上。