是否可以通过编程方式添加portlet?如果是,请帮助我理解其中的步骤。
答案 0 :(得分:1)
Liferay CE附带“sevencogs-hook”,其中包含用于设置演示内容的代码,例如用于演示Liferay网站的“Seven Cogs”虚拟公司。这以编程方式设置了一个完整的站点。您可以阅读该代码并了解如何创建用户和页面,将portlet添加到页面并配置为显示它们应显示的内容。更重要的是:它运行的代码很容易阅读,并且 - 作为副作用 - 是一个很好的文档。
http://svn.liferay.com/repos/public/plugins/trunk/hooks/sevencogs-hook/
登录:“访客”,无密码
或下载您所指的版本的来源。
答案 1 :(得分:0)
类似的东西:
ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
Layout layout = themeDisplay.getLayout();
long plid = layout.getPlid();
long ownerId = PortletKeys.PREFS_OWNER_ID_DEFAULT;
int ownerType = PortletKeys.PREFS_OWNER_TYPE_LAYOUT;
long companyId = themeDisplay.getCompanyId();
String portletIdInc = layoutTypePortlet.addPortletId(userId, thisPortletID);
// Retrieve the portlet preferences portlet instance just created
PortletPreferences prefs = PortletPreferencesLocalServiceUtil
.getPreferences(companyId, ownerId, ownerType, plid, portletIdInc);
// set desired language
String languageId = LanguageUtil.getLanguageId(request);
String urlImage = .... ;
prefs.setValue("portlet-setup-title-" + languageId, report.getName());
prefs.setValue("portlet-setup-use-custom-title", "true");
prefs.setValue("src", report.getUrl());
prefs.setValue("img", urlImage);
prefs.store();
String targetColumn = "column-1";
// update the portlet preferences
PortletPreferencesLocalServiceUtil.updatePreferences(ownerId,
ownerType, plid, portletIdInc, prefs);
if (Validator.isNotNull(targetColumn) && Validator.isNotNull(portletIdInc)) {
layoutTypePortlet.movePortletId(userId, portletIdInc, targetColumn, 2);
}
LayoutServiceUtil.updateLayout(layout.getGroupId(), layout.isPrivateLayout(),
layout.getLayoutId(), layout.getTypeSettings());