【问题标题】:How to include a partial into another partial's block?如何将一个部分包含到另一个部分的块中?
【发布时间】:2014-06-04 09:50:44
【问题描述】:

我使用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 的一个真正缺点。有什么解决方法吗?

【问题讨论】:

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


    【解决方案1】:

    如果我猜对了,这是不可能的。

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

    paularmstrong 写道:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-16
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多