Freemarker模板双重继承(子代扩展父代扩展祖辈) [英] Freemarker templates double inheritence (child extends parent extends grandparent)

查看:19
本文介绍了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设置为basenormalBaseuseCaseBase的情况下创建*.adoc页面,并且可以正常工作。

这篇关于Freemarker模板双重继承(子代扩展父代扩展祖辈)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆