希望有人可以请教。我正在为 CMS 设计一个主题。我有一个基于 twig 的页面作为主题模板,因此很明显,不同类型页面的所有 Twig 块都在一个文档中。CMS 有两种类型的页面,可以通过页面构建器创建和查看。目前,所有的 Twig 块都出现在页面 A 和页面 B 中,从字体端开始。我是否可以编写一些 Twig 代码,使我能够在 A 页上显示 Twig 块,但不能在 B 页上显示?我知道我需要某种过滤器,但我是按 url 过滤,还是有更好的方法?感谢您能给我的任何帮助。
问问题
31 次
1 回答
0
要防止显示扩展模板中的块,您可以覆盖该块
主要的.twig
{% block foo %}
Foo
{% endblock %}
{% block bar %}
Bar
{% endblock %}
孩子.twig
{% extends "main.twig" %}
{% block foo %}{% endblock %}
上面的代码片段只会显示Bar
更进一步,您可以通过使用函数覆盖一个块并仍然让扩展模板的原始块执行{{ parent() }}
孩子.twig
{% extends "main.twig" %}
{% block foo %}
Lorem Ipsum<br />
{{ parent() }}
{% endblock %}
这将输出
Lorem Ipsum<br />
Foo
Bar
有了这个解释,你可以在你喜欢的任何条件下包装函数调用parent()
,从而控制显示/隐藏哪个块
{% extends "main.twig" %}
{% block foo %}
{% if conditionA == true %}
{{ parent() }}
{% endif %}
{% endblock %}
{% block bar %}
{% if conditionB == true %}
{{ parent() }}
{% endif %}
{% endblock %}
于 2021-10-27T11:56:21.173 回答