In most of the real time application development, we may want to display dynamic content inside our custom portlet. This can be done by embedding a web content inside our custom portlet, as web contents can be modified on the fly and does not require any code changes or deployment. In this post, we will learn a way to embed a web content into our custom portlet and display the content on front end.
Basic steps to embed a web content to custom portlet are:
- Create a Web content.
- Create a custom portlet and embed the web content into it.
Create a Web content
Create a web content from control panel. Login with administrator credentials, navigate to Web content portlet on control panel section and add a new web content. This is the content we are going to embed on our portlet.
Create a custom portlet and embed the web content into it
Create a liferay portlet, open the view.jsp and add the following code into it. Here, we are fetching the web content based on the url title.
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> <%@page import="com.liferay.portlet.journalcontent.util.JournalContentUtil"%> <%@page import="com.liferay.portlet.journal.model.JournalArticleDisplay"%> <%@page import="com.liferay.portal.theme.ThemeDisplay" %> <%@page import="com.liferay.portal.kernel.util.WebKeys" %> <%@page import="com.liferay.portlet.journal.model.JournalArticle" %> <%@page import="com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil" %> <portlet:defineObjects /> <% ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); JournalArticle article = JournalArticleLocalServiceUtil.getLatestArticleByUrlTitle(themeDisplay.getScopeGroupId(), "my-first-web-content", 0); JournalArticleDisplay articleDisplay = JournalContentUtil.getDisplay(article.getGroupId(), article.getArticleId(), null , themeDisplay.getLanguageId(), themeDisplay); String content = articleDisplay.getContent(); %> This is the <b>EmbedWcPortlet</b> portlet.<br/><br/> <h4> Here is our Web content:</h4> <%=content.toString() %>
Finally, we have our web content getting displayed on our custom portlet.
Also Read:
- Creating web contents on liferay 6.2
- Embedding web content into liferay 6.2 theme
- Using theme settings on liferay 6.2
Note: Version used: Liferay 6.2 + Apache Tomcat 7.