老问题了,但谷歌仍然向我展示了这个,所以我会分享我的研究;我如何在 ADT 中获取结构字段的混搭:
<#if entries?has_content>
<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
<#list entries as entry>
<!-- get field values for entry -->
<#assign fields = entry.getAssetRenderer().getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValues()/>
<!-- print simple text field -->
<div>${fields[1].getValue().getString(locale)}</div>
<!-- link to page structure field -->
<#assign linkMap = fields[2].getValue().getString(locale)?eval />
<#assign pageURL = layoutLocalService.getLayout(linkMap.groupId?number, linkMap.privateLayout, linkMap.layoutId?number).getFriendlyURL() />
<a href="${pageURL}" class="hidden"><span class="link"></span></a>
<!-- document structure field -->
<#assign docValJSON = fields[6].getValue().getString(locale) />
<#if docValJSON?length gt 0 >
<#assign docVal = docValJSON?eval />
<a href="/documents/${docVal.groupId}/0/${docVal.title}">download</a>
</#if>
</#list>
</#if>
请注意,链接应始终存在,因此无需像文档那样进行额外检查。仅供参考,需要在门户设置中启用“serviceLocator”,否则 - 错误。