【发布时间】:2017-12-27 19:36:47
【问题描述】:
在 Liferay DXP 中,我使用 Asset Publisher Portlet 来显示 Web 内容结构条目的列表(在这种情况下为员工)。当我创建员工 Web 内容结构时,有必要创建一个 Web 内容模板来随它去吧。
但是,我的 Web 内容模板目前只是一个空模板,因为我不知道如何从 Asset Publisher portlet 用于显示我的员工列表的应用程序显示模板访问它。
我的应用程序显示模板当前如下所示:
<#if entries?has_content>
<div class="staff-members">
<div class="container">
<h3>Our staff</h3>
<div class="row offs">
<#list entries as curEntry>
<#assign docXml = saxReaderUtil.read(curEntry.getAssetRenderer().getArticle().getContent()) />
<#assign name = docXml.valueOf("//dynamic-element[@name='name']/dynamic-content/text()") />
<#assign photo = docXml.valueOf("//dynamic-element[@name='photo']/dynamic-content/text()") />
<#assign bio = docXml.valueOf("//dynamic-element[@name='bio']/dynamic-content/node()") />
<div class="col-md-3 col-sm-6 wow fadeIn animated" data-wow-duration="2s" data-wow-delay="0.2s" style="visibility: visible; animation-duration: 2s; animation-delay: 0.2s; animation-name: fadeIn;">
<div class="thumbnail">
<img src="${photo}" alt="${name}">
<div class="caption">
<h5>
<a href="#">${name}</a>
</h5>
<p>${bio}</p>
</div>
</div>
</div>
</#list>
</div>
</div>
</div>
</#if>
如您所见,我需要用额外的标记来包装工作人员标记块;这就是我使用 Asset Publisher 来显示我的应用程序显示模板的原因。
正如我所提到的,此设置需要向 Liferay 添加一个空的 Web 内容模板(用于员工结构),这看起来很愚蠢。我想做的是在该 Web 内容模板中定义可重复的标记,并从 ADT 中引用该模板。像这样:
<#if entries?has_content>
<div class="staff-members">
<div class="container">
<h3>Our staff</h3>
<div class="row offs">
<#list entries as curEntry>
<#assign docXml = saxReaderUtil.read(curEntry.getAssetRenderer().getArticle().getContent()) />
<#assign name = docXml.valueOf("//dynamic-element[@name='name']/dynamic-content/text()") />
<#assign photo = docXml.valueOf("//dynamic-element[@name='photo']/dynamic-content/text()") />
<#assign bio = docXml.valueOf("//dynamic-element[@name='bio']/dynamic-content/node()") />
<!--
CALL WEB CONTENT TEMPLATE HERE PASSING IN DATA
FOR THIS PARTICULAR WEB CONTENT ITEM.
-->
</#list>
</div>
</div>
</div>
</#if>
如何做到这一点?
【问题讨论】:
标签: liferay