<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>How to get friendly url of Internal-page field in ADT in DXP 7.3</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=121184818" />
  <subtitle>How to get friendly url of Internal-page field in ADT in DXP 7.3</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=121184818</id>
  <updated>2026-05-07T05:58:47Z</updated>
  <dc:date>2026-05-07T05:58:47Z</dc:date>
  <entry>
    <title>How to get friendly url of Internal-page field in ADT in DXP 7.3</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=121184817" />
    <author>
      <name>Ernesto Melian</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=121184817</id>
    <updated>2021-10-05T12:26:23Z</updated>
    <published>2021-10-05T12:24:17Z</published>
    <summary type="html">&lt;p&gt;Hello team&lt;br /&gt; I´m trying to create an Aplication Display Template
  (ADT) in Liferay DXP 7.3 reusing code made in velocity that we have
  running in Portal 6.2, but the results obtained are not the same, that
  is, we are not obtaining the same values.&lt;/p&gt;
&lt;p&gt;For example, we have web contents that use a structure that contains
  a Documents and media field (documents-and-media), but when obtaining
  the data from this field, instead of being a url that we can use in
  the src attribute of a image tag, we get a character string in object format:&lt;/p&gt;
&lt;pre&gt;
&lt;code class="language-html"&gt;{&amp;quot;classPK&amp;quot;:47068,&amp;quot;groupId&amp;quot;:&amp;quot;43835&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;article (1).jpg&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;document&amp;quot;,&amp;quot;uuid&amp;quot;:&amp;quot;9718236c-8b80-a729-6258-15033417b53a&amp;quot;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Similar happens with the fields of internal pages (ddm-link-to-page)
  that we could not obtain a friendly url to use in a &amp;lt;a&amp;gt; tag,
  getting the same string in an object format.&lt;/p&gt;
&lt;p&gt;Could you help me or guide me on how to go through the fields of the
  content structure when creating an ADT? It can be both with freemarker
  and velocity.&lt;/p&gt;
&lt;p&gt;We attach the ADT created so that you can see the code that we
  currently use. Lines 13 and 14 are the ones that obtain the data from
  the previously commented fields.&lt;/p&gt;
&lt;p&gt;We look forward.&lt;/p&gt;
&lt;p&gt;ADT Code:&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;#set($aplicaciones = [])
#set($layoutLocalService = $serviceLocator.findService(&amp;quot;com.liferay.portal.service.LayoutLocalService&amp;quot;))

#foreach ($entry in $entries)
	#set($renderer = $entry.getAssetRenderer())
	#set($className = $renderer.getClassName())
	#if( $className == &amp;quot;com.liferay.journal.model.JournalArticle&amp;quot; )
		#set($article = $renderer.getArticle())	
		#set($doc = $saxReaderUtil.read($article.getContent()))
		#set($rootElement = $document.getRootElement())

		#set($nombre = $doc.valueOf(&amp;quot;(//dynamic-element[@name='nombre_app'])/dynamic-content/text()&amp;quot;))
		#set($icono = $doc.valueOf(&amp;quot;(//dynamic-element[@name='icono_app'])/dynamic-content/text()&amp;quot;))
        #set($pagina = $doc.valueOf(&amp;quot;(//dynamic-element[@name='url_app'])/dynamic-content/text()&amp;quot;))
		#set($resumen = $doc.valueOf(&amp;quot;(//dynamic-element[@name='resumen'])/dynamic-content/text()&amp;quot;))
        #set($detalles_tecnicos = $saxReaderUtil.createXPath(&amp;quot;//dynamic-element[@name='d_tecnicos']&amp;quot;).selectNodes($doc.getRootElement()))
		
        #set($tiendas = [])
		#foreach ($detail in $detalles_tecnicos)
			#set($sistema = $detail.valueOf(&amp;quot;(//dynamic-element[@name='os'])[$velocityCount]/dynamic-content/text()&amp;quot;))
			#set($link = $detail.valueOf(&amp;quot;(//dynamic-element[@name='url'])[$velocityCount]/dynamic-content/text()&amp;quot;))
			#set($null = $tiendas.add({
	            &amp;quot;sistema&amp;quot;:$sistema,
	            &amp;quot;link&amp;quot;:$link
	        }))
		#end

		#set($app = {
			&amp;quot;nombre&amp;quot;:$nombre,
			&amp;quot;icono&amp;quot;:$icono,
			&amp;quot;resumen&amp;quot;:$resumen,
			&amp;quot;pagina&amp;quot;:$pagina,
			&amp;quot;tiendas&amp;quot;:$tiendas
		})
		#set($null = $aplicaciones.add($app))
	#end
#end

&amp;lt;div class=&amp;quot;container contenedor-aplicaciones&amp;quot;&amp;gt;
    &amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;
        #foreach($app in $aplicaciones)
            &amp;lt;div class=&amp;quot;col-sm columna-app&amp;quot;&amp;gt;
                &amp;lt;a href='$app.pagina' class=&amp;quot;link-app&amp;quot;&amp;gt;
                    &amp;lt;div class=&amp;quot;icono-app&amp;quot;&amp;gt;
                        &amp;lt;img src='$app.icono'&amp;gt;
                    &amp;lt;/div&amp;gt;
                    &amp;lt;h4 class=&amp;quot;&amp;quot;&amp;gt;$app.nombre&amp;lt;/h4&amp;gt;
                    #foreach($store in $app.tiendas)
                        &amp;lt;a href=&amp;quot;$store.link&amp;quot;&amp;gt;$store.sistema&amp;lt;/a&amp;gt;
                    #end
                &amp;lt;/a&amp;gt;
            &amp;lt;/div&amp;gt;
        #end
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;</summary>
    <dc:creator>Ernesto Melian</dc:creator>
    <dc:date>2021-10-05T12:24:17Z</dc:date>
  </entry>
</feed>
