Diferencia entre revisiones de «Hooks en Liferay»

De Dos Ideas.
Saltar a: navegación, buscar
(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
  
* Una posible implementación de dicho jsp es esta:
+
* 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>
 
* Esta implementación utiliza clases de Liferay para obtener los valores a mostrar (en este caso título, descripción y un link)
 

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) {%>

<%}%>