如何在宏中拥有几个不同的 #nested 元素?
宏中不能有不同的 #nested 元素,每次使用都会输出相同的文本。
如果您的目标是在宏中具有多个变量部分,则可以使用 #assign 元素。
页面示例#macro允许定义正文、页眉和页脚内容:
<#macro pageTemplate header="" footer="">
${header}
<#nested >
${footer}
</#macro>
然后,您可以使用 #assign 元素定义每个部分(但不可否认,拥有多个命名的 #nested 元素会更好)。
<#assign headerContent>
This is the header.
</#assign>
<#assign footerContent>
This is the footer.
</#assign>
<@pageTemplate header=headerContent footer=footerContent>
This is the nested content.
</@pageTemplate>
结果输出将是:
This is the header.
This is the nested content.
This is the footer.
#nested
指令可以有变量。所以当调用宏时我们可以检查它的值。
<#macro drawHtmlBlock>
<div class="html_block">
<div class="html_block__header">
<#nested 'header'/>
</div>
<div class="html_block__footer">
<#nested 'footer'/>
</div>
</div>
</#macro>
<@drawHtmlBlock ; contentType>
<#if contentType == 'header'>
header_content
<#elseif contentType == 'footer'>
footer_content
</#if>
</@drawHtmlBlock>