Foros de discusión

ADT en AssetPublisher, templates, accede a tu estructura FACILMENTE

thumbnail
Sergio Romero Zayas, modificado hace 9 años.

ADT en AssetPublisher, templates, accede a tu estructura FACILMENTE

Regular Member Mensajes: 151 Fecha de incorporación: 14/04/08 Mensajes recientes
Edito el asunto y el cuerpo, porque conforme han pasado los minutos se ha solucionado el problema.

Así que en lugar de ser un post de solicitud de ayuda, ofrezco en castellano, una salida para aquellos que quieran crear su propio template para el AssetPublisher, para listar contenidos de con una estructura que previamente han creado, como por ejemplo, "Noticias", con su sub-title, body, image, etc..

Ejemplo:
#if (!$entries.isEmpty())
	#foreach ($entry in $entries)
		#set($renderer = $entry.getAssetRenderer() )
                #set($className = $renderer.getClassName() )

obtenemos el renderer para obtener posteriormente el ClassName, necesario para estar seguros que lo que vamos a tratar es un contenido.

	 #if( $className == "com.liferay.portlet.journal.model.JournalArticle" )
            #set( $journalArticle = $renderer.getArticle() )
            #set( $document = $saxReaderUtil.read($journalArticle.getContent()) )
            #set( $rootElement = $document.getRootElement() )
            #set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='description_news']") )
            #set( $descripcionNoticia = $xPathSelector.selectSingleNode($rootElement).getStringValue() )


Comprobamos la clase, y extraemos el articulo haciendo uso del SaxReaderUtil. Una vez ahí, nos traemos el campo que necesitamos, en este ejemplo el "description_new" y luego lo sacamos en una variable para su fácil uso "$descripcionNoticia".

El código completo:

<div class="contentNewsHome">
#if (!$entries.isEmpty())
	#foreach ($entry in $entries)
		#set($renderer = $entry.getAssetRenderer() )
        #set($className = $renderer.getClassName() )
		 #if( $className == "com.liferay.portlet.journal.model.JournalArticle" )
            #set( $journalArticle = $renderer.getArticle() )
            #set( $document = $saxReaderUtil.read($journalArticle.getContent()) )
            #set( $rootElement = $document.getRootElement() )
            #set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='description_news']") )
            #set( $descripcionNoticia = $xPathSelector.selectSingleNode($rootElement).getStringValue() )
            #set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='Date6525']") )
            #set( $fechaNoticia = $xPathSelector.selectSingleNode($rootElement).getStringValue() )
            #set ($fechaFormateada = $dateUtil.newDate($getterUtil.getLong($fechaNoticia)))
            #set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='Title']") )
            #set( $tituloNoticia = $xPathSelector.selectSingleNode($rootElement).getStringValue() )
			#set( $xPathSelector = $saxReaderUtil.createXPath("dynamic-element[@name='Image4152']") )
            #set( $imageNoticia = $xPathSelector.selectSingleNode($rootElement).getStringValue() )
            #set( $link = $renderer.getURLViewInContext($renderRequest, $renderResponse, '') )

		<div>
			<a href="$link">
			$tituloNoticia</a><a></a>
			<a href="$link">
			<div class="imgNewHome"><img src="$imageNoticia" alt="$tituloNoticia"></div>
			<p><time>$dateUtil.getDate($fechaFormateada, "dd-MMM-yyyy", $locale)</time></p>
			<p>$descripcionNoticia</p>
			</a>
			<div class="clear"></div>
		</div>
		 #end
	#end
#end	
</div>



La solución es sencilla

Aquí tenéis toda la información en inglés, que es la fuente de donde saqué la información que me funcionó --> Accessing a Web Content Structure from Application Display Template
thumbnail
Alberto Glez, modificado hace 9 años.

RE: ADT en AssetPublisher, templates, accede a tu estructura FACILMENTE

New Member Mensajes: 3 Fecha de incorporación: 7/01/14 Mensajes recientes
Gracias Sergio, la verdad es que funciona muy bien, pero en mi caso tengo un problema, la estructura que estoy utilizando tiene como padre otra estructura, y a esos campos no soy capaz de acceder...

Se te ocurre alguna forma?

Muchas gracias!