Freemarker模板双重继承(子代扩展父代扩展祖辈) [英] Freemarker templates double inheritence (child extends parent extends grandparent)
本文介绍了Freemarker模板双重继承(子代扩展父代扩展祖辈)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Freemarker中,如何创建从自身继承的模板继承的模板?
单继承与<#nested>
标记配合使用:
文件base.ftl
:
<#macro layout>
<html lang="en">
<head>...</head>
<body>
<div>... (navigation bar)</div>
<div class="container">
<#nested>
</div>
</body>
</html>
</#macro>
文件normalBase.ftl
:
<#import "base.ftl" as base>
<@base.layout>
<div class="row">
<div class="col-md-9">
${content.body}
</div>
<div class="col-md-3">
<p>Latest releases</p>
<ul>....</ul>
</div>
</div>
</@base.layout>
如何将其转换为双重继承其中useCaseBase.ftl
扩展normalBase.ftl
扩展base.ftl
?
推荐答案
这就像一个护身符:
文件base.ftl
:
<#macro layout>
<html lang="en">
<head>...</head>
<body>
... // Shared navigation bar
<div class="container">
<#nested>
</div>
... // Shared footer
</body>
</html>
</#macro>
<@layout>
${content.body}
</@layout>
文件normalBase.ftl
:
<#import "base.ftl" as parent>
<#macro layout>
<@parent.layout>
<div class="row">
<div class="col-md-9">
<#nested>
</div>
<div class="col-md-3">
... // Shared sidebar
</div>
</div>
</@parent.layout>
</#macro>
<@layout>
${content.body}
</@layout>
文件useCaseBase.ftl
:
<#import "normalBase.ftl" as parent>
<@parent.layout>
${content.body}
... // Shared content between all use case pages
</@parent.layout>
现在,我可以在jbake-type
设置为base
、normalBase
或useCaseBase
的情况下创建*.adoc
页面,并且可以正常工作。
这篇关于Freemarker模板双重继承(子代扩展父代扩展祖辈)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文