首页 > 解决方案 > Liferay Asset Publisher ADT 获取图片 URL

问题描述

我在 Liferay 7.2 中创建了一个具有图像选择器的结构。当我将以下内容添加到 ADT 以获取图像时

<#assign
    artImg = saxReaderUtil.createXPath("dynamic-element[@name='Imagean48']")
/>

它不返回 URL,而是返回一个列表。

<img src=" {" classpk":1923313,"groupid":"1912582","name":"spc_desktop_welcome_image3_benefits.jpg","alt":"man="" in="" suit","title":"spc_desktop_welcome_image3_benefits.jpg","type":"document","uuid":"db10a245-881c-d09c-ab64-4aeebc1581f0","fileentryid":"1923313","resourceprimkey":"2474428"}="" "="">

是否可以仅获取图像的 URL?

标签: liferayadt

解决方案


评估artImg为哈希

<#assign
  artImg = saxReaderUtil.createXPath("dynamic-element[@name='Imagean48']")
  artImgHash = artImg?eval
/>

获取artImgDLFileEntry,然后获取其URL

<#assign
  dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")
  dlURLHelper = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper")

  artImgDLFile = dlFileEntryLocalService.getFileEntryByUuidAndGroupId(artImgHash.uuid, artImgHash.grouId)
  artImgURL = dlURLHelper.getImagePreviewURL(artImgDLFile, themeDisplay)
/>

然后你可以在你的img

<img src="${artImgURL}"/>

注意:我已经复制了您的artImg = saxReaderUtil.createXPath...线路,但我认为它不起作用。正确的方法是这样的:

<#assign 
  journal = entry.getAssetRenderer().getArticle()
  rootElement = saxReaderUtil.read(journal.content).getRootElement()
  artImg = rootElement.selectSingleNode("dynamic-element[@name='Imagean48']")
/>

推荐阅读