Listing Article fragments dynamically using Liferay's WCM Templates
Propiedad: "required-deployment-contexts"
http://www.liferay.com/community/forums/-/message_boards/message/6019395/maximized
http://www.liferay.com/web/thiago.moreira/blog/-/blogs/2349199/maximized
http://www.liferay.com/community/forums/-/message_boards/message/6229074;jsessionid=F451D73E12E12475067C590E5537221F.node-1
http://www.liferay.com/community/forums/-/message_boards/message/6224992
<Context>
<Loader
loaderClass="com.liferay.support.tomcat.loader.PortalClassLoader"
/>
</Context>
Mostrando entradas con la etiqueta Liferay. Mostrar todas las entradas
Mostrando entradas con la etiqueta Liferay. Mostrar todas las entradas
viernes, 17 de septiembre de 2010
lunes, 9 de agosto de 2010
Liferay - cosas por ingestigar
Como poner el título de la página a Liferay (head...title)
//etc....
public void addPageTitle(String title, HttpServletRequest request) {
String requestTitle = (String)request.getAttribute(WebKeys.PAGE_TITLE);
if (requestTitle != null) {
title = requestTitle + StringPool.SPACE + title;
}
request.setAttribute(WebKeys.PAGE_TITLE, title);
}
Class Loading
EXT allows native access to portal class loader
Plugins can also access the portal class loader via
PortalClassInvoker
Plugins can access other plugins via PortletClassInvoker
ServiceBuilder simplifies class loading issues
MessageBus bypasses class loading issues
- javax.portlet.renderheaders
- public static final String PAGE_TITLE = "LIFERAY_SHARED_PAGE_TITLE";
//etc....
public void addPageTitle(String title, HttpServletRequest request) {
String requestTitle = (String)request.getAttribute(WebKeys.PAGE_TITLE);
if (requestTitle != null) {
title = requestTitle + StringPool.SPACE + title;
}
request.setAttribute(WebKeys.PAGE_TITLE, title);
}
Class Loading
EXT allows native access to portal class loader
Plugins can also access the portal class loader via
PortalClassInvoker
Plugins can access other plugins via PortletClassInvoker
ServiceBuilder simplifies class loading issues
MessageBus bypasses class loading issues
martes, 16 de junio de 2009
Liferay: Mi visor 2
## Número de resultado que mostraremos por página
#set ($numResults4Page = 2)
#set ($muvas = $portal.getClass().forName("es.muvas.MuvasSemanticServices").newInstance())
#set($tags= $httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "tags", false))
#set($minusTags= $httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "minusTags", false))
#set ($page = $getterUtil.getInteger($httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "page", false)))
#set ($renderUrlWithoutPage = $stringUtil.remove($httpUtil.decodeURL($request.attributes.CURRENT_URL), "&page=$page",""))
#set ($renderUrlWithoutPage = $stringUtil.remove($httpUtil.decodeURL($request.attributes.CURRENT_URL), "page=$page",""))
#if ($page == 0)
#set ($page = 1)
#end
#set ($company = ""+$companyId)
#set ($renderUrl = $request.get("render-url"))
#set ($namespace = $request.get("portlet-namespace"))
## Comienzo div principal
<div class="results-grid">
#set($articlesVisorBaseUrl = "/web/guest/article/-/journal_content/56_INSTANCE_2ABK/")
#set($searchContainer = $muvas.searchJournalArticles($company, $tags, $minusTags, ""))
#set ($results = $searchContainer.getResults($numResults4Page, $page))
#set ($numPages = $searchContainer.getNumPages($numResults4Page))
#foreach ($result in $results)
#set ($articleUrl = $articlesVisorBaseUrl + $result.groupId + "/" + $result.articleId)
#set($muvasArticle = $muvas.getMuvasArticle($result.groupId, $result.articleId))
<h3>$result.title</h3>
#if($muvasArticle.getIGImage())
<a class="mini_photo" href="$muvasArticle.imageURL"><img alt="$muvasArticle.getIGImage().description" title="$muvasArticle.getIGImage().name" src="/image/image_gallery?img_id=${muvasArticle.getIGImage().smallImageId}"></a>
#end
<div>
$muvasArticle.description
</div>
<div>
<a title="Ver artículo: $result.title" href="$articleUrl">$result.title</a>
</div>
#end
#if ($searchContainer.length > 0)
<div class="taglib-search-iterator-page-iterator-bottom">
<div class="taglib-page-iterator">
#set ($last= $results.size() - 1)
<div class="search-results">
#set ($beginIndex = $results.get(0).index)
#set ($lastIndex = $results.get($last).index)
#if ($beginIndex == $lastIndex)
Mostrando resultado $beginIndex de $searchContainer.length resultados.
#else
Mostrando resultados $beginIndex - $lastIndex de $searchContainer.length resultados.
#end
</div>
<div class="search-pages">
<div class="delta-selector"> Items per Page
<select>
<option value="5">5</option>
<option value="10">10</option>
<option selected="selected" value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="75">75</option>
</select>
</div>
<script type="text/javascript">
function _submitMyPageIterator() {
var curValue = jQuery("option:selected", this).val();
var href = "${renderUrlWithoutPage}&page="+curValue;
location.href = href;
}
jQuery(
function() {
jQuery('.page-selector-select').change(_submitMyPageIterator);
}
);
</script>
<div class="page-selector"> Página
<select class="page-selector-select">
#foreach ($i in [1..$numPages])
#if ($i == $page)
<option selected="selected" value="$i">$i</option>
#else
<option value="$i">$i</option>
#end
#end
</select> de $numPages
</div>
<div class="page-links">
#set ($prev = $page - 1)
#set ($next = $page + 1)
#if ($page == 1)
<span class="first"> Primero </span>
<span class="previous"> Anterior </span>
#else
<a class="first" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", 1)"> Primero </a>
<a class="previous" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", $prev)"> Anterior </a>
#end
#if ($numPages == $page)
<span class="next"> Siguiente </span>
<span class="last"> Último </span>
#else
<a class="next" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", $next)"> Siguiente </a>
<a class="last" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", $numPages)"> Último </a>
#end
</div>
</div>
</div>
</div>
#end
</div>
Liferay: Mi visor
## Número de resultado que mostraremos por página
#set ($numResults4Page = 2)
#set ($muvas = $portal.getClass().forName("es.muvas.MuvasSemanticServices").newInstance())
#set($tags= $httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "tags", false))
#set($minusTags= $httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "minusTags", false))
#set ($page = $getterUtil.getInteger($httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "page", false)))
#set ($renderUrlWithoutPage = $stringUtil.remove($httpUtil.decodeURL($request.attributes.CURRENT_URL), "&page=$page",""))
#set ($renderUrlWithoutPage = $stringUtil.remove($httpUtil.decodeURL($request.attributes.CURRENT_URL), "page=$page",""))
#if ($page == 0)
#set ($page = 1)
#end
#set ($company = ""+$companyId)
#set ($renderUrl = $request.get("render-url"))
#set ($namespace = $request.get("portlet-namespace"))
## Comienzo div principal
<div class="results-grid">
<table class="taglib-search-iterator">
<tr class="portlet-section-header results-header">
<th class="col-1">#</th>
<th class="col-2">Nombre</th>
<th class="col-3">Contenido</th>
</tr>
#set($articlesVisorBaseUrl = "/web/guest/article/-/journal_content/56_INSTANCE_2ABK/")
#set($searchContainer = $muvas.searchJournalArticles($company, $tags, $minusTags, ""))
#set ($results = $searchContainer.getResults($numResults4Page, $page))
#set ($numPages = $searchContainer.getNumPages($numResults4Page))
#foreach ($result in $results)
#set ($articleUrl = $articlesVisorBaseUrl + $result.groupId + "/" + $result.articleId)
#if ($velocityCount % 2 == 0)
<tr class="portlet-section-alternate results-row alt"
onmouseover="this.className = 'portlet-section-alternate-hover results-row alt hover';" onmouseout="this.className = 'portlet-section-alternate results-row alt';">
<td align="left" class="col-1" colspan="1" valign="middle">
$result.index.
</td>
<td align="left" class="col-2" colspan="1" valign="middle">
$result.titlehighlight
</td>
<td align="left" class="col-3" colspan="1" valign="middle">
$result.content
<br />
<span style="font-size: xx-small;">
<br /><a title="Ver artículo: $result.title" href="$articleUrl">$result.title</a>
</span>
</td>
</tr>
#else
<tr class="portlet-section-body results-row"
onmouseover="this.className = 'portlet-section-body-hover results-row hover';" onmouseout="this.className = 'portlet-section-body results-row';">
<td align="left" class="col-1" colspan="1" valign="middle">
$result.index.
</td>
<td align="left" class="col-2" colspan="1" valign="middle">
$result.titlehighlight
</td>
<td align="left" class="col-3" colspan="1" valign="middle">
$result.content
<br />
<span style="font-size: xx-small;">
<br /><a title="Ver artículo: $result.title" href="$articleUrl">$result.title</a>
</span>
</td>
</tr>
#end
#end
</table>
#if ($searchContainer.length > 0)
<div class="taglib-search-iterator-page-iterator-bottom">
<div class="taglib-page-iterator">
#set ($last= $results.size() - 1)
<div class="search-results">
#set ($beginIndex = $results.get(0).index)
#set ($lastIndex = $results.get($last).index)
#if ($beginIndex == $lastIndex)
Mostrando resultado $beginIndex de $searchContainer.length resultados.
#else
Mostrando resultados $beginIndex - $lastIndex de $searchContainer.length resultados.
#end
</div>
<div class="search-pages">
<div class="delta-selector"> Items per Page
<select>
<option value="5">5</option>
<option value="10">10</option>
<option selected="selected" value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="75">75</option>
</select>
</div>
<script type="text/javascript">
function _submitMyPageIterator() {
var curValue = jQuery("option:selected", this).val();
var href = "${renderUrlWithoutPage}&page="+curValue;
location.href = href;
}
jQuery(
function() {
jQuery('.page-selector-select').change(_submitMyPageIterator);
}
);
</script>
<div class="page-selector"> Página
<select class="page-selector-select">
#foreach ($i in [1..$numPages])
#if ($i == $page)
<option selected="selected" value="$i">$i</option>
#else
<option value="$i">$i</option>
#end
#end
</select> de $numPages
</div>
<div class="page-links">
#set ($prev = $page - 1)
#set ($next = $page + 1)
#if ($page == 1)
<span class="first"> Primero </span>
<span class="previous"> Anterior </span>
#else
<a class="first" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", 1)"> Primero </a>
<a class="previous" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", $prev)"> Anterior </a>
#end
#if ($numPages == $page)
<span class="next"> Siguiente </span>
<span class="last"> Último </span>
#else
<a class="next" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", $next)"> Siguiente </a>
<a class="last" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", $numPages)"> Último </a>
#end
</div>
</div>
</div>
</div>
#end
</div>
Liferay: Mi buscador avanzado
## Número de resultado que mostraremos por página
#set ($numResults4Page = 2)
#set ($muvas = $portal.getClass().forName("es.muvas.MuvasSemanticServices").newInstance())
#set($museum = $httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "museum", false))
#set($author = $httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "author", false))
#set($type = $httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "type", false))
#set($topic = $httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "topic", false))
#set($search = $httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "search", false))
#set ($page = $getterUtil.getInteger($httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "page", false)))
#set ($renderUrlWithoutPage = $stringUtil.remove($httpUtil.decodeURL($request.attributes.CURRENT_URL), "&page=$page",""))
#if ($page == 0)
#set ($page = 1)
#end
#set ($company = ""+$companyId)
#set ($renderUrl = $request.get("render-url"))
#set ($namespace = $request.get("portlet-namespace"))
#set ($museums = $muvas.findMuseums())
#set ($authors = $muvas.findAuthors())
#set ($types = $muvas.fingTypes())
#set ($topics = $muvas.fingTopics())
<form action="$renderUrl" method="get" name="${namespace}fm2">
<label for="museum">Museo: </label>
<select name="museum" id="museum">
#if($museum == "")
<option selected="selected" value="">Todas</option>
#else
<option value="">Todas</option>
#end
#foreach ($each in $museums)
#if($museum == $each.id)
<option selected="selected" value="$each.id">$each.title</option>
#else
<option value="$each.id">$each.title</option>
#end
#end
</select>
<label for="author">Autor: </label>
<select name="author" id="author">
#if($author == "")
<option selected="selected" value="">Todas</option>
#else
<option value="">Todas</option>
#end
#foreach ($each in $authors)
#if($author == $each.id)
<option selected="selected" value="$each.id">$each.title</option>
#else
<option value="$each.id">$each.title</option>
#end
#end
</select>
<label for="type">Tipo: </label>
<select name="type" id="type">
#if($type == "")
<option selected="selected" value="">Todas</option>
#else
<option value="">Todas</option>
#end
#foreach ($each in $types)
#if($type ==$each)
<option selected="selected" value="$each">$each</option>
#else
<option value="$each">$each</option>
#end
#end
</select>
<label for="topic">Tema: </label>
<select name="topic" id="topic">
#if($topic == "")
<option selected="selected" value="">Todas</option>
#else
<option value="">Todas</option>
#end
#foreach ($each in $topics)
#if($topic == $each)
<option selected="selected" value="$each">$each</option>
#else
<option value="$each">$each</option>
#end
#end
</select>
<label for="search">Búsqueda: </label>
<input type="text" value="$!search" id="search" name="search"/>
<input type="submit" value="Buscar"/>
</form>
#if ($search && $search.trim() != "")
<div class="results-grid">
<table class="taglib-search-iterator">
<tr class="portlet-section-header results-header">
<th class="col-1">#</th>
<th class="col-2">Nombre</th>
<th class="col-3">Contenido</th>
</tr>
#set($articlesVisorBaseUrl = "/web/guest/article/-/journal_content/56_INSTANCE_2ABK/")
$museum
$author
$type
$topic
$muvas.searchJournalArticlesPiece($company, "", "", "", "", $search).length
#set($searchContainer = $muvas.searchJournalArticlesPiece($company, $museum, $author, $type, $topic, $search))
#set ($results = $searchContainer.getResults($numResults4Page, $page))
#set ($numPages = $searchContainer.getNumPages($numResults4Page))
#foreach ($result in $results)
#set ($articleUrl = $articlesVisorBaseUrl + $result.groupId + "/" + $result.articleId)
#if ($velocityCount % 2 == 0)
<tr class="portlet-section-alternate results-row alt"
onmouseover="this.className = 'portlet-section-alternate-hover results-row alt hover';" onmouseout="this.className = 'portlet-section-alternate results-row alt';">
<td align="left" class="col-1" colspan="1" valign="middle">
$result.index.
</td>
<td align="left" class="col-2" colspan="1" valign="middle">
$result.titlehighlight
</td>
<td align="left" class="col-3" colspan="1" valign="middle">
$result.content
<br />
<span style="font-size: xx-small;">
<br /><a title="Ver artículo: $result.title" href="$articleUrl">$result.title</a>
</span>
</td>
</tr>
#else
<tr class="portlet-section-body results-row"
onmouseover="this.className = 'portlet-section-body-hover results-row hover';" onmouseout="this.className = 'portlet-section-body results-row';">
<td align="left" class="col-1" colspan="1" valign="middle">
$result.index.
</td>
<td align="left" class="col-2" colspan="1" valign="middle">
$result.titlehighlight
</td>
<td align="left" class="col-3" colspan="1" valign="middle">
$result.content
<br />
<span style="font-size: xx-small;">
<br /><a title="Ver artículo: $result.title" href="$articleUrl">$result.title</a>
</span>
</td>
</tr>
#end
#end
</table>
#if ($searchContainer.length > 0)
<div class="taglib-search-iterator-page-iterator-bottom">
<div class="taglib-page-iterator">
#set ($last= $results.size() - 1)
<div class="search-results">
#set ($beginIndex = $results.get(0).index)
#set ($lastIndex = $results.get($last).index)
#if ($beginIndex == $lastIndex)
Mostrando resultado $beginIndex de $searchContainer.length resultados.
#else
Mostrando resultados $beginIndex - $lastIndex de $searchContainer.length resultados.
#end
</div>
<div class="search-pages">
<div class="delta-selector"> Items per Page
<select>
<option value="5">5</option>
<option value="10">10</option>
<option selected="selected" value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="75">75</option>
</select>
</div>
<script type="text/javascript">
function _submitMyPageIterator() {
var curValue = jQuery("option:selected", this).val();
var href = "${renderUrlWithoutPage}&page="+curValue;
location.href = href;
}
jQuery(
function() {
jQuery('.page-selector-select').change(_submitMyPageIterator);
}
);
</script>
<div class="page-selector"> Página
<select class="page-selector-select">
#foreach ($i in [1..$numPages])
#if ($i == $page)
<option selected="selected" value="$i">$i</option>
#else
<option value="$i">$i</option>
#end
#end
</select> de $numPages
</div>
<div class="page-links">
#set ($prev = $page - 1)
#set ($next = $page + 1)
#if ($page == 1)
<span class="first"> Primero </span>
<span class="previous"> Anterior </span>
#else
<a class="first" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", 1)"> Primero </a>
<a class="previous" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", $prev)"> Anterior </a>
#end
#if ($numPages == $page)
<span class="next"> Siguiente </span>
<span class="last"> Último </span>
#else
<a class="next" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", $next)"> Siguiente </a>
<a class="last" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", $numPages)"> Último </a>
#end
</div>
</div>
</div>
</div>
#end
</div>
#end
Liferay: Mi buscador
## Número de resultado que mostraremos por página
#set ($numResults4Page = 2)
#set ($muvas = $portal.getClass().forName("es.muvas.MuvasSemanticServices").newInstance())
#set($search = $httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "search", false))
#set ($page = $getterUtil.getInteger($httpUtil.getParameter($httpUtil.decodeURL($request.attributes.CURRENT_URL), "page", false)))
#set ($renderUrlWithoutPage = $stringUtil.remove($httpUtil.decodeURL($request.attributes.CURRENT_URL), "&page=$page",""))
#if ($page == 0)
#set ($page = 1)
#end
#set ($company = ""+$companyId)
#set ($renderUrl = $request.get("render-url"))
#set ($namespace = $request.get("portlet-namespace"))
<form action="$renderUrl" method="get" name="${namespace}fm2">
<label for="search">Búsqueda: </label>
<input type="text" value="$!search" name="search"/>
<input type="submit" value="Buscar"/>
</form>
#if ($search && $search.trim() != "")
<div class="results-grid">
<table class="taglib-search-iterator">
<tr class="portlet-section-header results-header">
<th class="col-1">#</th>
<th class="col-2">Nombre</th>
<th class="col-3">Contenido</th>
</tr>
#set($articlesVisorBaseUrl = "/web/guest/article/-/journal_content/56_INSTANCE_2ABK/")
#set($searchContainer = $muvas.searchJournalArticles($company, $search))
#set ($results = $searchContainer.getResults($numResults4Page, $page))
#set ($numPages = $searchContainer.getNumPages($numResults4Page))
#foreach ($result in $results)
#set ($articleUrl = $articlesVisorBaseUrl + $result.groupId + "/" + $result.articleId)
#if ($velocityCount % 2 == 0)
<tr class="portlet-section-alternate results-row alt"
onmouseover="this.className = 'portlet-section-alternate-hover results-row alt hover';" onmouseout="this.className = 'portlet-section-alternate results-row alt';">
<td align="left" class="col-1" colspan="1" valign="middle">
$result.index.
</td>
<td align="left" class="col-2" colspan="1" valign="middle">
$result.titlehighlight
</td>
<td align="left" class="col-3" colspan="1" valign="middle">
$result.content
<br />
<span style="font-size: xx-small;">
<br /><a title="Ver artículo: $result.title" href="$articleUrl">$result.title</a>
</span>
</td>
</tr>
#else
<tr class="portlet-section-body results-row"
onmouseover="this.className = 'portlet-section-body-hover results-row hover';" onmouseout="this.className = 'portlet-section-body results-row';">
<td align="left" class="col-1" colspan="1" valign="middle">
$result.index.
</td>
<td align="left" class="col-2" colspan="1" valign="middle">
$result.titlehighlight
</td>
<td align="left" class="col-3" colspan="1" valign="middle">
$result.content
<br />
<span style="font-size: xx-small;">
<br /><a title="Ver artículo: $result.title" href="$articleUrl">$result.title</a>
</span>
</td>
</tr>
#end
#end
</table>
#if ($searchContainer.length > 0)
<div class="taglib-search-iterator-page-iterator-bottom">
<div class="taglib-page-iterator">
#set ($last= $results.size() - 1)
<div class="search-results">
#set ($beginIndex = $results.get(0).index)
#set ($lastIndex = $results.get($last).index)
#if ($beginIndex == $lastIndex)
Mostrando resultado $beginIndex de $searchContainer.length resultados.
#else
Mostrando resultados $beginIndex - $lastIndex de $searchContainer.length resultados.
#end
</div>
<div class="search-pages">
<div class="delta-selector"> Items per Page
<select>
<option value="5">5</option>
<option value="10">10</option>
<option selected="selected" value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="75">75</option>
</select>
</div>
<script type="text/javascript">
function _submitMyPageIterator() {
var curValue = jQuery("option:selected", this).val();
var href = "${renderUrlWithoutPage}&page="+curValue;
location.href = href;
}
jQuery(
function() {
jQuery('.page-selector-select').change(_submitMyPageIterator);
}
);
</script>
<div class="page-selector"> Página
<select class="page-selector-select">
#foreach ($i in [1..$numPages])
#if ($i == $page)
<option selected="selected" value="$i">$i</option>
#else
<option value="$i">$i</option>
#end
#end
</select> de $numPages
</div>
<div class="page-links">
#set ($prev = $page - 1)
#set ($next = $page + 1)
#if ($page == 1)
<span class="first"> Primero </span>
<span class="previous"> Anterior </span>
#else
<a class="first" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", 1)"> Primero </a>
<a class="previous" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", $prev)"> Anterior </a>
#end
#if ($numPages == $page)
<span class="next"> Siguiente </span>
<span class="last"> Último </span>
#else
<a class="next" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", $next)"> Siguiente </a>
<a class="last" href="$httpUtil.addParameter($renderUrlWithoutPage, "page", $numPages)"> Último </a>
#end
</div>
</div>
</div>
</div>
#end
</div>
#end
jueves, 30 de abril de 2009
Acceder a servicios de Liferay desde plantilla de velocity
Existe 2 opciones
La primera necesita:
La segunda alternativa no requiere modificar el fichero "portal_ext.properties" y consiste en:
#set ($tagsService = $portal.getClass().forName("com.liferay.portlet.tags.service.TagsAssetLocalServiceUtil").getMethod("getService", null).invoke(null, null))
#set ($journalArticleResourceService = $portal.getClass().forName("com.liferay.portlet.journal.service.JournalArticleResourceLocalServiceUtil").getMethod("getService", null).invoke(null, null))
Con ello accedemos también a los servicios.
Otro ejemplo, acceder al usuario que escribio el artículo e imprimir su nombre
#set ($userService = $serviceLocator.findService("com.liferay.portal.service.UserLocalService"))
#set ($user = $userService.getUserById($getterUtil.getLong($reserved-article-author-id.getData())))
$user.getScreenName()
Ejemplo propio
#set ($museumService = $serviceLocator.findService("com.muvac.service.MuseumLocalService"))
#set ($museum= $museumService.findById($museo.data))
Autor: ${autor.data}
Museo: ${museo.data}
Datos del museo
$museum.name
$museum.description
La primera necesita:
- Usando el "liferay-ext", modificar el fichero "portal_ext.proporties" y cambiar la entrada: "journal.template.velocity.restricted.variables= " es decir no debe tener valor o al menos no contener "serviceLocator" con ello tendremos una variable que nos permite acceder a servicios de Liferay.
- Si deseamos acceder a un servicio propio deberemos crearlo e insertalo usando "liferay-ext"
- Finalmente para acceder: desde dentro de la plantilla:
#set ($tagsService = $serviceLocator.findService("com.liferay.portlet.tags.service.TagsAssetLocalService"))
#set ($journalArticleResourceService = $serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleResourceLocalService"))
#set ($longGroupId = $getterUtil.getLong($groupId))
#set ($articleResourcePK = $journalArticleResourceService.getArticleResourcePrimKey($longGroupId, $reserved-article-id.data))
#set ($tagsAsset = $tagsService.getAsset("com.liferay.portlet.journal.model.JournalArticle", $articleResourcePK))
#set ($tagsEntries = $tagsAsset.getEntries())
Tags:
#foreach( $entry in $tagsEntries )
#set ($tag = $entry.getName())
#if($velocityCount!=1), #end
$tag
#end
La segunda alternativa no requiere modificar el fichero "portal_ext.properties" y consiste en:
#set ($tagsService = $portal.getClass().forName("com.liferay.portlet.tags.service.TagsAssetLocalServiceUtil").getMethod("getService", null).invoke(null, null))
#set ($journalArticleResourceService = $portal.getClass().forName("com.liferay.portlet.journal.service.JournalArticleResourceLocalServiceUtil").getMethod("getService", null).invoke(null, null))
Con ello accedemos también a los servicios.
Otro ejemplo, acceder al usuario que escribio el artículo e imprimir su nombre
#set ($userService = $serviceLocator.findService("com.liferay.portal.service.UserLocalService"))
#set ($user = $userService.getUserById($getterUtil.getLong($reserved-article-author-id.getData())))
$user.getScreenName()
Ejemplo propio
#set ($museumService = $serviceLocator.findService("com.muvac.service.MuseumLocalService"))
#set ($museum= $museumService.findById($museo.data))
Autor: ${autor.data}
Museo: ${museo.data}
Datos del museo
$museum.name
$museum.description
Suscribirse a:
Entradas (Atom)