Diferencia entre revisiones de «Hooks en Liferay»
(Página creada con '==Qué es un Hook? == Es una extensión de un componente de Liferay, es decir, tomar un componente que ya posee y sobreescribir ciertas cosas para adecuarlo a nuestras necesidad…') |
(→Hook de Asset Publisher) |
||
Línea 17: | Línea 17: | ||
* En la estructura del proyecto, crear un nuevo JSP en WEB-INF/jsp/html/portlet/asset_publisher/display/nuestraVista.jsp | * En la estructura del proyecto, crear un nuevo JSP en WEB-INF/jsp/html/portlet/asset_publisher/display/nuestraVista.jsp | ||
− | * | + | * Esta implementación utiliza clases de Liferay para obtener los valores a mostrar (en este caso título, descripción y un link): |
<code> | <code> | ||
− | |||
<%@ include file="/html/portlet/asset_publisher/init.jsp" %> | <%@ include file="/html/portlet/asset_publisher/init.jsp" %> | ||
− | |||
<% | <% | ||
List results = (List) request.getAttribute("view.jsp-results"); | List results = (List) request.getAttribute("view.jsp-results"); | ||
− | |||
int assetEntryIndex = ((Integer) request.getAttribute("view.jsp-assetEntryIndex")).intValue(); | int assetEntryIndex = ((Integer) request.getAttribute("view.jsp-assetEntryIndex")).intValue(); | ||
− | |||
AssetEntry assetEntry = (AssetEntry) request.getAttribute("view.jsp-assetEntry"); | AssetEntry assetEntry = (AssetEntry) request.getAttribute("view.jsp-assetEntry"); | ||
AssetRendererFactory assetRendererFactory = (AssetRendererFactory) request.getAttribute("view.jsp-assetRendererFactory"); | AssetRendererFactory assetRendererFactory = (AssetRendererFactory) request.getAttribute("view.jsp-assetRendererFactory"); | ||
Línea 82: | Línea 78: | ||
<%if (assetEntryIndex == 0) {%> | <%if (assetEntryIndex == 0) {%> | ||
− | |||
− | |||
<div class="noticias"> | <div class="noticias"> | ||
<ul id="aui_3_4_0_1_522"> | <ul id="aui_3_4_0_1_522"> | ||
− | |||
<%}%> | <%}%> | ||
− | |||
<li> | <li> | ||
<span><%= title%></span> | <span><%= title%></span> | ||
Línea 96: | Línea 88: | ||
</div> | </div> | ||
</li> | </li> | ||
− | |||
− | |||
<%if (assetEntryIndex == results.size()-1) {%> | <%if (assetEntryIndex == results.size()-1) {%> | ||
</ul> | </ul> | ||
</div> | </div> | ||
− | |||
<%}%> | <%}%> | ||
</code> | </code> | ||
− | |||
− |
Revisión actual del 19:56 23 jul 2013
Qué es un Hook?
Es una extensión de un componente de Liferay, es decir, tomar un componente que ya posee y sobreescribir ciertas cosas para adecuarlo a nuestras necesidades.
¿Cómo creo un Hook?
Para crear un hook podemos utilizar el arquetipo de maven liferay-hook-archetype
Hook de Asset Publisher
Un asset publisher nos muestra publicaciones que va recolectando de distintas páginas del sitio. Tiene por default 4 formas de mostrarse:
- table
- title-list
- abstracts
- full-content
En este caso, supongamos que ninguna de estas formas nos resultan adecuadas, y que queremos mostrarlo de alguna otra manera. Para esto, debemos realizar lo siguiente:
- Crear el hook con el arquetipo de Maven.
- En la estructura del proyecto, crear un nuevo JSP en WEB-INF/jsp/html/portlet/asset_publisher/display/nuestraVista.jsp
- Esta implementación utiliza clases de Liferay para obtener los valores a mostrar (en este caso título, descripción y un link):
<%@ include file="/html/portlet/asset_publisher/init.jsp" %>
<%
List results = (List) request.getAttribute("view.jsp-results"); int assetEntryIndex = ((Integer) request.getAttribute("view.jsp-assetEntryIndex")).intValue(); AssetEntry assetEntry = (AssetEntry) request.getAttribute("view.jsp-assetEntry"); AssetRendererFactory assetRendererFactory = (AssetRendererFactory) request.getAttribute("view.jsp-assetRendererFactory"); AssetRenderer assetRenderer = (AssetRenderer) request.getAttribute("view.jsp-assetRenderer");
boolean show = ((Boolean) request.getAttribute("view.jsp-show")).booleanValue();
request.setAttribute("view.jsp-showIconLabel", true);
String title = (String) request.getAttribute("view.jsp-title");
if (Validator.isNull(title)) { title = assetRenderer.getTitle(locale); }
PortletURL viewFullContentURL = renderResponse.createRenderURL();
viewFullContentURL.setParameter("struts_action", "/asset_publisher/view_content"); viewFullContentURL.setParameter("assetEntryId", String.valueOf(assetEntry.getEntryId())); viewFullContentURL.setParameter("type", assetRendererFactory.getType());
if (Validator.isNotNull(assetRenderer.getUrlTitle())) { if (assetRenderer.getGroupId() != scopeGroupId) { viewFullContentURL.setParameter("groupId", String.valueOf(assetRenderer.getGroupId())); }
viewFullContentURL.setParameter("urlTitle", assetRenderer.getUrlTitle()); }
String summary = StringUtil.shorten(assetRenderer.getSummary(locale), abstractLength);
String viewURL = null;
if (viewInContext) { String viewFullContentURLString = viewFullContentURL.toString();
viewFullContentURLString = HttpUtil.setParameter(viewFullContentURLString, "redirect", currentURL);
viewURL = assetRenderer.getURLViewInContext(liferayPortletRequest, liferayPortletResponse, viewFullContentURLString);
viewURL = HttpUtil.setParameter(viewURL, "redirect", currentURL); } else { viewURL = viewFullContentURL.toString(); }
if (Validator.isNull(viewURL)) { viewURL = viewFullContentURL.toString(); }
String viewURLMessage = viewInContext ? assetRenderer.getViewInContextMessage() : "read-more-x-about-x";
viewURL = _checkViewURL(viewURL, currentURL, themeDisplay);
%>
<%if (assetEntryIndex == 0) {%>
-
<%}%>
-
<%= title%>
<%= summary%>
<a href='<%=viewURL%>'>Leer mas</a>
<%if (assetEntryIndex == results.size()-1) {%>
<%}%>