1

我使用Swig作为模板引擎。

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

1.

布局.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.

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

索引.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.

这是一个 html 代码partials/header.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 的一个真正缺点。有一些解决方法吗?

4

1 回答 1

0

如果我没听错,这是不可能的。

看看这个类似的问题。在此评论中,有一个指向github上相关问题的链接。

paularmstrong写道:

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

...您应该使用多个扩展...
永远不会支持包含中的块。

还有一个与您的示例类似的示例,您可能想要查看。

于 2014-06-24T20:56:19.933 回答