以编程方式添加portlet

时间:2010-06-16 18:08:23

标签: liferay portlet

是否可以通过编程方式添加portlet?如果是,请帮助我理解其中的步骤。

2 个答案:

答案 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());