Программно добавление портлетов - PullRequest
2 голосов
/ 16 июня 2010

Можно ли программно добавить портлет? Если да, пожалуйста, помогите мне понять шаги для этого.

Ответы [ 2 ]

1 голос
/ 21 июня 2010

Liferay CE поставляется с «sevencogs-hook», который содержит код для настройки демонстрационного контента, например, виртуальная компания «Seven Cogs», используемая для демонстрации сайта Liferay.Это создает полный сайт программно.Вы можете прочитать этот код и узнать, как создаются пользователи и страницы, портлеты добавляются на страницы и настраиваются для отображения того, что они должны показывать.Более того: он запускает код, который легко читается и, как побочный эффект, является отличным документом.*

или загрузите исходный код для версии, на которую вы ссылаетесь.

0 голосов
/ 24 октября 2012

Что-то вроде:

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());
...