Nunjucks 中的模板继承,有什么要求?
Template Inheritance in Nunjucks, what are the requirements?
好的超级基本问题,但我一定遗漏了一些东西。
我呈现我的页面:
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 %}
现在我想 index.njk 扩展 panel.njk(文件在同一文件夹中):
{% extends 'index.njk' %}
{% block panel %}
<p>second sploooge</p>
{% endblock %}
但我无法让它出现。该文档没有提及任何内容,但我是否需要以某种方式呈现它 index.njk?
我认为这个问题出在您拥有 'middle' 文件的位置。
我使用以下配置使其工作:
文件树:
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>
您可以在任何地方使用模板,只需确保将其添加到扩展中的 url。示例:
{% extends "templates/layouts/extras/template.njk" %}
这会变得非常混乱并增加出错的可能性,但理论上它会起作用。
也考虑在某些领域使用 include,在这种情况下,没有额外的模板层可能会有所帮助。
好的超级基本问题,但我一定遗漏了一些东西。
我呈现我的页面:
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 %}
现在我想 index.njk 扩展 panel.njk(文件在同一文件夹中):
{% extends 'index.njk' %}
{% block panel %}
<p>second sploooge</p>
{% endblock %}
但我无法让它出现。该文档没有提及任何内容,但我是否需要以某种方式呈现它 index.njk?
我认为这个问题出在您拥有 'middle' 文件的位置。
我使用以下配置使其工作:
文件树:
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>
您可以在任何地方使用模板,只需确保将其添加到扩展中的 url。示例:
{% extends "templates/layouts/extras/template.njk" %}
这会变得非常混乱并增加出错的可能性,但理论上它会起作用。
也考虑在某些领域使用 include,在这种情况下,没有额外的模板层可能会有所帮助。