Liferay 在显示模板脚本中获取结构字段值
我正在尝试为我的资产发布者条目设置自定义显示。 我创建了一个带有“image”字段(名为“main_image”)的结构,然后, 我创建了一个显示模板来获取条目:Liferay 在显示模板脚本中获取结构字段值,liferay,liferay-velocity,Liferay,Liferay Velocity,我正在尝试为我的资产发布者条目设置自定义显示。 我创建了一个带有“image”字段(名为“main_image”)的结构,然后, 我创建了一个显示模板来获取条目: <#if entries?has_content> <#list entries as curEntry> <div>${curEntry.getTitle(locale)}</div> </#if> </#lis
<#if entries?has_content>
<#list entries as curEntry>
<div>${curEntry.getTitle(locale)}</div>
</#if>
</#list>
</#if>
${curEntry.getTitle(区域设置)}
问题是我不知道如何获得image字段(“结构中声明的main_image”)值
我试过了,但没有成功:
<img src = "${curEntry.main_image()}"</img>
问候,
标记。如果我没记错的话,接口方法称为
getData()
。如果临时将${curEntry.getClass().getName()}
插入模板中,然后查找将在输出中看到的接口,您可以自己查找
回答您的评论:属性通常是透明解析的,例如,try${curEntry.main_image.getClass().getName()}
,${curEntry.main_image.getData()}
。(这都是出于记忆——我已经有一段时间不需要它了。如果它仍然不起作用,请尝试这些的变体,或者回复
还请注意,您的模板中有一个奇怪的
。我假设这是清理此问题的代码后的遗留问题,否则您可能还需要更正此问题。我认为您试图做的是从资产发布者显示模板访问web内容结构。您不能按照前面提到的方式执行。
您必须先解析xml,然后再执行它
此链接将帮助您-老掉牙的问题,但谷歌仍向我展示了这一点,因此我将分享我的研究成果;我如何在ADT it中获得结构字段的mashup:
<#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>
${fields[1].getValue().getString(区域设置)}
请注意,链接应该始终存在,这样就不会像文档一样进行额外检查。
仅供参考,需要在门户设置中启用“serviceLocator”,否则-错误。Hi-Olaf。它输出:
com.liferay.portlet.asset.model.impl.AssetEntryImpl
。但是,这个类(或超类)中的哪个属性包含结构自定义字段(“main_image”)?我循环了curEntry.getExpandoBridge().getAttributeNames()
但输出中没有任何内容。这仍然不起作用。如果向内容结构中添加自定义条目,则无法在ADT中以${entry.customFieldName.getData()}的形式访问它。您使用的是哪个版本?Hoooly shiz请接受我的支持。这花了太长时间才弄清楚。Liferay文档简直毫无用处