Liferay 资产发布者条目变量在 adt 中分配给自身
Posted
技术标签:
【中文标题】Liferay 资产发布者条目变量在 adt 中分配给自身【英文标题】:Liferay asset publisher entry variable assignment to itself in adt 【发布时间】:2018-07-11 05:31:30 【问题描述】:我正在使用 Liferay 7,通过查看资产发布者的默认广告,我在“丰富摘要”广告中看到以下代码部分
<#list entries as entry>
<#assign
entry = entry
assetRenderer = entry.getAssetRenderer()
entryTitle = htmlUtil.escape(assetRenderer.getTitle(locale))
viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry)
/>
...
(在 GitHub 上查看 https://github.com/liferay/liferay-portal/blob/master/portal-web/test/functional/com/liferay/portalweb/dependencies/adt_asset_publisher_rich_summary.ftl)
进行entry = entry
分配有什么理由吗?
在我看来这不应该是必要的,我是否可能错过了为什么在 freemarker 中可能需要这样的任务?
[编辑]
考虑到这种方式entry
甚至会在list
循环之外定义,为什么要这样做?有必要吗?
在这个模板中实际上没有更多对该变量的引用。那么在创建新的自定义广告时是否需要此分配?
【问题讨论】:
【参考方案1】:由于#assign
在当前模板的命名空间中创建/写入一个变量,而#list
在循环范围(更具体、更窄的范围)中创建一个变量,该语句将entity
从循环范围到更广泛的模板命名空间范围。如果该模板真的需要它,我不知道;在#list
之外的那个(或#include
/#imported
-d)模板中查找对entry
的引用。引用的部分不需要它。
【讨论】:
【参考方案2】:这是由于在此文件底部的循环之外使用了宏。
【讨论】:
以上是关于Liferay 资产发布者条目变量在 adt 中分配给自身的主要内容,如果未能解决你的问题,请参考以下文章
Liferay 6.2 - (VM)资产发布者的速度模板 - 如何获取它在另一个变量中的变量?