【发布时间】: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