Exibir Conteúdo Web em Outra Página em Outro PortletExibir Conteúdo Web em Outra Página em Outro Portlethttps://liferay.dev/en/c/message_boards/find_thread?p_l_id=119785333&threadId=822087492024-03-29T15:22:02Z2024-03-29T15:22:02ZRE: Exibir Conteúdo Web em Outra Página em Outro PortletBruno Mori Baratahttps://liferay.dev/en/c/message_boards/find_message?p_l_id=119785333&messageId=825576372016-11-18T11:18:13Z2016-11-18T11:18:13Z<html><head></head><body>Eu consegui, os principais pontos para realizar esta tarefa foram:<br><br>1° - Saber que o "layoutUuid" é o Id da página de exibição de um conteúdo web, com isso eu posso pegar informações como PLID, todos os PortletsIds que pertencem àquela página, etc.<br><br>2° - Pegando informações certas do "Document" eu consigo criar um "AssetEntry".<br><br>Este é o código de como eu peguei as informações da "página de exibição" de um conteúdo web:<br><pre><code>
ResultRow row = (ResultRow) request.getAttribute(WebKeys.SEARCH_CONTAINER_RESULT_ROW);
Object[] objArray = (Object[])row.getObject();
Document doc = (Document)objArray[1];
String layoutUuid = doc.get("layoutUuid");
Layout specificLayout = LayoutLocalServiceUtil.getLayoutByUuidAndCompanyId( layoutUuid, PortalUtil.getDefaultCompanyId() );
specificPlid = specificLayout.getPlid();
articleLayoutTypePortlet = (LayoutTypePortlet) specificLayout.getLayoutType();
List<portlet> allPortlets = articleLayoutTypePortlet.getAllPortlets();
for (Portlet portlet : allPortlets){
if ( PortletKeys.ASSET_PUBLISHER.equals( portlet.getRootPortletId() ) ) {
portletId = PortletKeys.ASSET_PUBLISHER + PortletConstants.INSTANCE_SEPARATOR + portlet .getInstanceId();
break;
}
}
</portlet></code></pre><br><br> Após isso eu criei o "AssetEntry" para pegar o "assetEntryId" e finalmente criar meu link dinâmico, veja:<br> <pre><code>
String className = doc.get("entryClassName");
Long classPk = Long.parseLong( doc.get("entryClassPK") );
AssetEntry assetEntry = AssetEntryLocalServiceUtil.getEntry(className, classPk);
Long assetEntryId = assetEntry.getEntryId();
webContentPortletURL = PortletURLFactoryUtil.create(request, portletId, specificPlid, PortletRequest.RENDER_PHASE);
webContentPortletURL.setParameter( "struts_action", "/asset_publisher/view_content" );
webContentPortletURL.setParameter( "groupId", String.valueOf(articleGroupId) );
webContentPortletURL.setParameter( "type", "content" );
webContentPortletURL.setParameter( "assetEntryId", String.valueOf(assetEntryId) );
webContentPortletURL.setParameter( "articleId", articleId );
</code></pre><br><br>Todas essas modificações foram em "journal_content_search/article_content.jsp".<br><br>Espero que isto ajude muitas pessoas!</body></html>Bruno Mori Barata2016-11-18T11:18:13ZExibir Conteúdo Web em Outra Página em Outro PortletBruno Mori Baratahttps://liferay.dev/en/c/message_boards/find_message?p_l_id=119785333&messageId=822087482016-11-09T12:56:57Z2016-11-09T12:56:57Z<html><head></head><body>Olá, estou usando o Liferay 6.2 e estou tendo problemas para exibir um conteúdo web do portlet "portlet-journal-content-search", em outro portlet "portlet-asset-publisher", em outra página.<br><br>Meu maior problema é o fato de eu precisar após realizar minha pesquisa, que o sistema exiba os resultador com um link apontando para as suas respectivas páginas de exibição e para o portlet "portlet-asset-publisher". Cada resultado deverá ter um link gerado dinamicamente, porque cada um terá uma página de exibição diferente.<br><br>Eu tentei encontrar no código onde a informação da "página de exibição" de cada conteúdo web está, mas não encontrei.<br><br>Eu pensei em usar a tag do Liferay "renderURL" para fazer isso, porém não sei como amarrar meu conteúdo web a ele, e nem como pegar dinamicamente a "pagina de exibição" de cada conteúdo.<br><br>Hoje quando eu clico no Link para ser redirecionado para meu conteúdo eu fico na mesma página e meu conteúdo é exibido no portlet "".portlet-journal-content".<br><br>O código atual é:<br><br><pre><code>
&lt;%
PortletURL webContentPortletURL = PortletURLFactoryUtil.create(request, targetPortletId, plid, PortletRequest.RENDER_PHASE);
webContentPortletURL.setParameter("struts_action", "/journal_content/view");
webContentPortletURL.setParameter("groupId", String.valueOf(articleGroupId));
webContentPortletURL.setParameter("articleId", articleId);
%&gt;
<br><a href="<%= webContentPortletURL.toString() %>">&lt;%= StringUtil.shorten(webContentPortletURL.toString(), 100) %&gt;</a>
</code></pre><br><br>Mas eu preciso ser redirecionado para a página de exibição que está atrelado ao meu conteúdo, e ele precisa ser exibido no portlet ".portlet-asset-publisher".<br>O código que estou tentando utilizar, porém não está funcionando é:<br><br><pre><code>
<portlet:defineobjects />
<liferay-theme:defineobjects />
&lt;%
String portletId = PortletKeys.ASSET_PUBLISHER;
long otherPlid = PortalUtil.getPlidFromPortletId(themeDisplay.getScopeGroupId(), portletId);
%&gt;
<liferay-portlet:renderurl var="testURL" plid="<%=otherPlid%>" portletname="<%=portletId%>">
<liferay-portlet:param name="groupId" value="<%= String.valueOf(articleGroupId) %>" />
<liferay-portlet:param name="articleId" value="<%= articleId %>" />
</liferay-portlet:renderurl>
<br><a href="<%= testURL %>">&lt;%= StringUtil.shorten(testURL.toString(), 100) %&gt;</a>
</code></pre><br><br>Alguém tem alguma ideia de como posso