Liferay ist zum sechsten Mal in Folge ein Leader im Gartner Magic Quadrant. Hier mehr erfahren
« Zurück zu Layout

Add runtime portlets to a layout

Intro #

In some cases you may need to have a portlet show up on every single page every time. Instead of adding it manually everytime you create a new page, you can embed portlets in your custom Layout Template

Since Liferay version 4.3.x we have the ability to create runtime portlets and store them in layout files.

Layout example #

Here is an example:

 
  <table id="layout-grid">
   <tr>
    <td class="lfr-column thirty" id="left" valign="top">
     $processor.processPortlet("71")
     $processor.processColumn("left")
    </td>
    <td class="lfr-column seventy" id="column-1" valign="top">
     $processor.processPortlet("73")
     $processor.processColumn("column-1")
    </td>
   </tr>
  </table>
 

This is a typical layout template, with runtime portlets (navigation and breadcrumb) forced to always be above every other portlet.

Managing Instanceable Portlets #

In case you want to embed instanceable portlets, you can do it this way:

$processor.processPortlet("71_INSTANCE_abc1")

where abc1 can be a random four character code to differentiate instances of the same portlet being placed in the same page.

Embeding Custom Portlets #

If we need to add custom portlets to a page, we can do it this way:

$processor.processPortlet("portletId_WAR_webapplicationcontext_INSTANCE_abc2")

Configuring embedded portlets #

Unfortunately the $processor.processPortlet(...) mechanism does not allow configuration (portlet preferences) to be passed to the portlets. However, there's a workaround: You can use the same mechanics as in a theme - taken from LPS-15746:

$velocityPortletPreferences.setValue("portlet-setup-show-borders", "false")
$velocityPortletPreferences.setValue("header-type", "none")
$velocityPortletPreferences.setValue("root-layout-type", "absolute")
$velocityPortletPreferences.setValue("root-layout-level", "2")
$velocityPortletPreferences.setValue("included-layouts", "buderusleft")
$velocityPortletPreferences.setValue("nested-children", "true")
$theme.runtime("71_INSTANCE_abcd", "", $velocityPortletPreferences.toString())
$velocityPortletPreferences.reset() 

Related Articles #

0 Anhänge
53603 Angesehen
Durchschnitt (2 Stimmen)
Die durchschnittliche Bewertung ist 3.0 von max. 5 Sternen.
Kommentare
Antworten im Thread Autor Datum
any details about runtime for journal content... delang j 24. November 2008 07:44
I can still minimize, maximmize and configure... Dennis Greiffenberg 8. Juni 2010 23:37
Is it not possible to do this for 'Poll... Bart Simpson 22. September 2011 04:34
How can I add a different journal portlets to... armando ponce 28. März 2012 08:39
added the information for how to configure a... Olaf Kock 13. Juni 2012 11:44
From where do you get a portlet instance id?... the denu 10. Juli 2012 06:37
I'd tried it with Liferay 6.1.1, but It doesn't... Juan Antonio Girón 1. Oktober 2012 07:55
Please refer below post: ... Himanshu Bhandari 3. Juni 2015 22:47

any details about runtime for journal content which is display article
Gepostet am 24.11.08 07:44.
I can still minimize, maximmize and configure the portlets (owner of the page, since private page pre-populated with default content). How can I prevent users from changing these settings?
Gepostet am 08.06.10 23:37.
Is it not possible to do this for 'Poll Display' portlet ?
$processor.processPortlet("59")
for Poll display doesn't work.
Gepostet am 22.09.11 04:34 als Antwort auf Dennis Greiffenberg.
How can I add a different journal portlets to the layout and make the unique, so that when an author selects content for the journal, don't affect other journals?
Gepostet am 28.03.12 08:39.
added the information for how to configure a portlet
Gepostet am 13.06.12 11:44 als Antwort auf armando ponce.
From where do you get a portlet instance id? For example: portletId_WAR_webapplicationcontext_INSTANCE_abc2, and I mean that is custom portlet, not one included with Liferay?
Gepostet am 10.07.12 06:37 als Antwort auf Olaf Kock.
I'd tried it with Liferay 6.1.1, but It doesn't work.
How can I use "$processor.processPortlet" with Liferay 6.1.1?
Gepostet am 01.10.12 07:55 als Antwort auf Maciej Witwicki.
Please refer below post:

http://www.liferay.com/community/forums/-/message_boards/message/31829783
Gepostet am 03.06.15 22:47 als Antwort auf Maciej Witwicki.