我使用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的真正缺点。有一些解决方法吗?
答案 0 :(得分:0)
如果我说得对,那就无法做到。
看看这个similar question。 在this评论中,github上有相关问题的链接。
附带的模板不支持块。你应该(能够)构建你的扩展/继承来完成同样的事情......
...你应该使用多个扩展...
将永远不支持包含块。
还有一个类似于你的例子,你可能想要查看。