好的超级基本问题,但我必须遗漏一些东西。
我渲染我的页面:
router.get('/', function(req, res) {
res.render('index.njk', {});
});
在布局文件夹中创建我的基本布局main-layout.njk:
<!DOCTYPE html>
<html>
<body>
{% block content %}
{% endblock %}
</body>
</html>
扩展我的模板index.njk以向布局添加内容:
{% extends 'layout/main-layout.njk' %}
{% block content %}
<?php include_once("analyticstracking.php") ?>
<main>
<p>sploooge</p>
{% block panel %}{% endblock %}
</main>
{% endblock %}
现在我想通过panel.njk扩展index.njk(该文件位于同一个文件夹中):
{% extends 'index.njk' %}
{% block panel %}
<p>second sploooge</p>
{% endblock %}
但我不能让它出现。文档没有提到任何内容,但我需要以某种方式呈现它像index.njk?
答案 0 :(得分:1)
我认为这个问题在于你拥有中间人的地方。文件。
我使用以下配置:
文件树:
pages/
-index.njk
templates/
-base.njk
-layout.njk
base.njk:
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
{% block content %}{% endblock %}
</body>
</html>
layout.njk
{% extends "base.njk" %}
{% block content %}
Content
{% block more %}{% endblock %}
{% endblock %}
index.njk:
{% extends "layout.njk" %}
{% block more %}
More Content
{% endblock %}
输出:
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
Content
More Content
</body>
</html>
您可以使用任何位置的模板,您只需确保将其添加到扩展中的网址即可。示例:
{% extends "templates/layouts/extras/template.njk" %}
这会让人感到非常困惑并增加错误的可能性,但理论上它会起作用。
考虑在某些领域使用包含,在这种情况下,没有额外的模板层可能是有益的。