Twig 模板继承问题
Twig Template Inheritance Issues
我正在尝试为我的 Craft CMS 安装设置一个干净的结构,但是在一些 非常 基本的树枝和构建我的东西的好方法方面遇到了问题。
See this gist - 为什么我的导航栏不会在此示例中显示?
更好的是,我想像这样构建我的网站 - 但它没有显示任何内容? - another gist
我是不是以某种方式错误地混合了 extend/block 模式?这感觉非常基础,因此非常令人沮丧。如果有任何帮助,我将不胜感激。
在您的第一个要点中,在 index.twig
中,您正确地扩展了 base.twig
。但是,您没有指定 navbar
块的内容,因此该块默认为 base.twig
.
中设置的空内容
您可以使用 include
function:
更改 base.twig
以包含 navbar.twig
...
<div id="content">
{% include "navbar.twig" %}
{% block content %}{% endblock %}
</div>
...
您也不应在 navbar.twig
中扩展 base.twig
以防止无限递归(base
包括 navbar
,扩展 base
,其中包括 navbar
, ...).
如果您希望导航栏在 index.twig
和其他文件中被覆盖,您可以在 base.twig
中保留 navbar
块并将其默认内容设置为包含 navbar.twig
:
...
<div id="content">
{% block content %}
{% include "navbar.twig" %}
{% endblock %}
{% block content %}{% endblock %}
</div>
...
然后,在 index.twig
中,如果您省略 {% block navbar %}{% endblock %}
,导航栏将使用 navbar.twig
中的内容。或者您也可以覆盖 navbar
块的内容:
{% extends "base" %}
{% block navbar %}
<h2>Overridden navbar</h2>
{% endblock %}
{% block content %}
<h2>Main content</h2>
{% endblock %}
在你的第二个要点中,在 index.twig
中,你可以将 {% block head %}{% endblock %}
更改为 {% include "head.twig" %}
等等。在 head.twig
和其他文件中,您不应该再次扩展 index.twig
以防止无限递归。
我建议您查看 Twig's documentation about the extends
tag 以了解块和模板的实际工作原理。在你的两个要点中,块和模板使用不正确。
我正在尝试为我的 Craft CMS 安装设置一个干净的结构,但是在一些 非常 基本的树枝和构建我的东西的好方法方面遇到了问题。
See this gist - 为什么我的导航栏不会在此示例中显示?
更好的是,我想像这样构建我的网站 - 但它没有显示任何内容? - another gist
我是不是以某种方式错误地混合了 extend/block 模式?这感觉非常基础,因此非常令人沮丧。如果有任何帮助,我将不胜感激。
在您的第一个要点中,在 index.twig
中,您正确地扩展了 base.twig
。但是,您没有指定 navbar
块的内容,因此该块默认为 base.twig
.
您可以使用 include
function:
base.twig
以包含 navbar.twig
...
<div id="content">
{% include "navbar.twig" %}
{% block content %}{% endblock %}
</div>
...
您也不应在 navbar.twig
中扩展 base.twig
以防止无限递归(base
包括 navbar
,扩展 base
,其中包括 navbar
, ...).
如果您希望导航栏在 index.twig
和其他文件中被覆盖,您可以在 base.twig
中保留 navbar
块并将其默认内容设置为包含 navbar.twig
:
...
<div id="content">
{% block content %}
{% include "navbar.twig" %}
{% endblock %}
{% block content %}{% endblock %}
</div>
...
然后,在 index.twig
中,如果您省略 {% block navbar %}{% endblock %}
,导航栏将使用 navbar.twig
中的内容。或者您也可以覆盖 navbar
块的内容:
{% extends "base" %}
{% block navbar %}
<h2>Overridden navbar</h2>
{% endblock %}
{% block content %}
<h2>Main content</h2>
{% endblock %}
在你的第二个要点中,在 index.twig
中,你可以将 {% block head %}{% endblock %}
更改为 {% include "head.twig" %}
等等。在 head.twig
和其他文件中,您不应该再次扩展 index.twig
以防止无限递归。
我建议您查看 Twig's documentation about the extends
tag 以了解块和模板的实际工作原理。在你的两个要点中,块和模板使用不正确。