我正在尝试为我的Asset Publisher条目设置自定义显示。 我创建了一个带有“图像”字段的结构(名为“main_image”),然后, 我创建了一个显示模板来获取条目:
<#if entries?has_content>
<#list entries as curEntry>
<div>${curEntry.getTitle(locale)}</div>
</#if>
</#list>
</#if>
问题是我不知道如何获取图像字段(在结构中声明的“main_image”)值。
我试过这个没有成功:
<img src = "${curEntry.main_image()}"</img>
此致
标记。
答案 0 :(得分:1)
我认为您要做的是从资产发布者显示模板访问Web内容结构。你不能按照你提到的方式去做。
您必须解析xml然后执行此操作。
此链接可以帮助您 - Accessing a Web Content Structure from Application Display Template
答案 1 :(得分:1)
老问题,但谷歌仍然向我展示这个,所以我将分享我的研究;如何在ADT中获取结构字段的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>
请注意,链接应始终存在,因此不需要对文档进行额外检查。 只是FYI“serviceLocator”需要在门户设置中启用,否则 - 错误。
答案 2 :(得分:0)
如果我没记错的话,接口方法称为getData()
。如果您暂时将${curEntry.getClass().getName()}
插入模板,然后查找您在输出中看到的界面,则可以自行查找。
回答您的评论:通常会透明地解析属性,例如:试试${curEntry.main_image.getClass().getName()}
,${curEntry.main_image.getData()}
。 (这一切都来自记忆 - 我暂时不需要这些。如果它仍然不起作用或回复,请尝试这些变体。
另请注意,您的模板中有一个奇怪的</#if>
。我认为清理这个问题的代码是一个遗留问题,否则你可能也想纠正这个问题。