掲示板

ADT en AssetPublisher, templates, accede a tu estructura FACILMENTE

thumbnail
9年前 に Sergio Romero Zayas によって更新されました。

ADT en AssetPublisher, templates, accede a tu estructura FACILMENTE

Regular Member 投稿: 151 参加年月日: 08/04/14 最新の投稿
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
9年前 に Alberto Glez によって更新されました。

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

New Member 投稿: 3 参加年月日: 14/01/07 最新の投稿
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!