如何将部分包含到另一个部分块中?

时间:2014-06-04 09:50:44

标签: node.js template-engine swig-template

我使用Swig作为模板引擎。

我需要包含部分但仅包含在另一个部分块中。但是Swig将它包含在下面,忽略了一个块标记。以下是它的外观:

1

的layout.html

<!DOCTYPE html>
<html>
    <head>
        {% block title %}{% endblock %}
        {% block headtag %}
            <link rel='stylesheet' href='/assets/css/global.css' />
            <link rel='stylesheet' href='/bower_components/bootstrap/dist/css/bootstrap.css' />
            <script src="/bower_components/jquery/dist/jquery.js"></script>
            <script src="/bower_components/bootstrap/dist/js/bootstrap.js"></script>
        {% endblock %}
    </head>

    <body>
        <div class="container cmt">

            {% block content %}{% endblock %}

        </div>
    </body>
</html>

2

这是一个在请求后呈现的页面视图。

的index.html

{% extends 'layouts/layout.html' %}


{% block title %}
    <title>{{ title }}</title>
{% endblock %}

{% block headtag %}
    {% parent %}
    <link href="/assets/css/index/index.css" rel="stylesheet">
    <link href="/assets/css/header.css" rel="stylesheet">
{% endblock %}



{% block content %}

    {% include 'index_content.html' %}

{% endblock %}

第3

这里我包含一个标题部分(partials/header.html)。此标头部分有一个空块标记(header_nav),其中我想要包含另一个部分(header_nav.html)。但只进入了街区。请参阅 header.html 更低。

index_content.html

{% include 'partials/header.html' %}

{% block header_nav %}
    {% include 'header_nav.html' %}
{% endblock %}    

4

这是partials/header.html的html代码。请参阅块标记header_nav。在该块中,我想放置 header_nav.html 。但它不起作用。它将 header_nav.html 放在 partials / header.html 旁边:

<div class="clearfix mb30">

    <div class="row">

        <div class="col-md-3">
            <div id="logo_div" class="">
                <div class="logo_div">
                    <a href="/" title="">
                        <span class="logo_span"></span>
                    </a>
                </div>
            </div>
        </div>

        <div class="col-md-9 hctrlbar">

            {% block header_nav %}
                ... I want to include a partial here only ...
            {% endblock %}

        </div>

    </div>
</div>

... But Swig ignores header_nav block and places here for some reason ...

如何实现它?据我所知,这是Swig的真正缺点。有一些解决方法吗?

1 个答案:

答案 0 :(得分:0)

如果我说得对,那就无法做到。

看看这个similar question。 在this评论中,github上有相关问题的链接。

paularmstrong写道:

  

附带的模板不支持块。你应该(能够)构建你的扩展/继承来完成同样的事情......

     

...你应该使用多个扩展...
  将永远不支持包含块。

还有一个类似于你的例子,你可能想要查看。