Forums

Home » Liferay Portal » English » 6. Portal Framework »

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Karoly Holczhauser
add portlet to layout page from code
January 26, 2011 4:02 AM
Answer

Karoly Holczhauser

Rank: New Member

Posts: 8

Join Date: January 13, 2011

Recent Posts

Hi there!

I would like to ask you, how can I add a portlet to a layout page from sourcecode ?

Thank you: Karoly
Mati-ur-Rehman Khan
RE: add portlet to layout page from code
January 26, 2011 6:54 AM
Answer

Mati-ur-Rehman Khan

Rank: New Member

Posts: 24

Join Date: November 1, 2010

Recent Posts

Hi Karoly,

Following code will help you.

Layout lay = null;
long userId = USER.getUserId();
String friendlyURL = "/myNewPage";
long groupId = GroupLocalServiceUtil.getGroup(COMPANY.getCompanyId(), GroupConstants.GUEST).getGroupId();
boolean privateLayout = false;
long parentLayoutId = 0;
String name = "myNewPage";
String title = null;
String description = null;
String type = LayoutConstants.TYPE_PORTLET;
boolean hidden = false;
ServiceContext serviceContext = new ServiceContext();

lay = LayoutLocalServiceUtil.addLayout(userId,groupId,privateLayout,parentLayoutId,name,title,description,type,hidden,friendlyURL,serviceContext);

lay.setTypeSettings(ONE_COLUMN);
LayoutLocalServiceUtil.updateLayout(lay);

Portlet portlet = PortletLocalServiceUtil.getPortletById("PORTLET_ID");

LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet)lay.getLayoutType();

String id = layoutTypePortlet.addPortletId(USER.getUserId(),portlet.getPortletId(),"column-1",-2);

lay = LayoutLocalServiceUtil.updateLayout(lay.getGroupId(), lay.isPrivateLayout(),lay.getLayoutId(), lay.getTypeSettings());

PortletPreferences portletSetup = PortletPreferencesLocalServiceUtil.addPortletPreferences(COMPANY.getCompanyId(), 0, 3, lay.getPlid(), id, portlet, "<portlet-preferences />");
Karoly Holczhauser
RE: add portlet to layout page from code
February 4, 2011 6:51 AM
Answer

Karoly Holczhauser

Rank: New Member

Posts: 8

Join Date: January 13, 2011

Recent Posts

Hi there !

Okay here is my solution for adding a layout:

    try {

        layout = LayoutLocalServiceUtil.getFriendlyURLLayout(groupId,
            false/* privateLayout */, friendlyURL);

    } catch (NoSuchLayoutException e) {
        // lefut, ha még nincs ilyen a táblában

        layout = LayoutLocalServiceUtil
            .addLayout(userId/* userId */, groupId,
                false/* privateLayout */, 0/* parentLayoutId */,
                name, null/* title */, null/* description */,
                LayoutConstants.TYPE_PORTLET/* type */,
                false/* hidden */, friendlyURL/* friendlyURL */,
                new ServiceContext()/* serviceContext */);

    }

and then adding a portlet to the layout:

String typeSettings = StringPool.BLANK;
    typeSettings += "column-1=" + portletId + "\n";
    layout.setTypeSettings(typeSettings);

    LayoutLocalServiceUtil.updateLayout(layout.getGroupId(),
        layout.isPrivateLayout(), layout.getLayoutId(),
        layout.getTypeSettings());

Thanks once more: Karoly
Nitesh Sahay
RE: add portlet to layout page from code
January 25, 2012 2:02 AM
Answer

Nitesh Sahay

Rank: Junior Member

Posts: 32

Join Date: November 28, 2011

Recent Posts

Hi karoly it works.... but can u tell me how more than one portlet will be added to the same portlet....
Oliver Bayer
RE: add portlet to layout page from code
January 25, 2012 5:05 AM
Answer

Oliver Bayer

Rank: Liferay Master

Posts: 613

Join Date: February 18, 2009

Recent Posts

Hi Nitesh,

these are exactly the typesettings I was referring in your other thread. You can separate the portlet-ids with a comma/semikolon.

HTH Oli
Nitesh Sahay
RE: add portlet to layout page from code
January 30, 2012 2:48 AM
Answer

Nitesh Sahay

Rank: Junior Member

Posts: 32

Join Date: November 28, 2011

Recent Posts

Thanks oliver