我正在尝试使用此框架/ CMS制作应用:10月CMS。我正在阅读documentation而我无法找到我想要完成的事情;它说:
{%set%}标记可用于在模板中设置变量。
{%设置activePage ='博客'%}
我想添加一个可选的partial,或者默认情况下,如果主页中的变量为true,则将其添加到布局中。在Blade模板中,你可以只使用@yield('partial')
并且不这样做就不会抛出异常,在Twig模板中也是如此。所以我做了以下事情:
在 layout.htm 文件中:
{% set flipbook = true %}
... some code
在使用该布局的 home.htm 中:
{% if flipbook %}
{% partial 'partial' %}
{% endif %}
... some code
问题:不包含partial,它指的是不在同一变量范围内的变量。我知道这涉及范围,因为我也尝试过这样的事情:
{% set flipbook = true %}
{% if flipbook %}
{% partial 'partial' %}
{% endif %}
... some code
这很有效......有什么想法吗?提前谢谢。
答案 0 :(得分:2)
解决方案是将变量传递给您的部分。请参阅OctoberCMS文档:https://octobercms.com/docs/cms/partials#partial-variables
{% partial "partial" flipbook=flipbook %}
在部分内部,可以像任何其他标记一样访问变量 变量:
<p>Name: {{ flipbook.name }}</p>
答案 1 :(得分:0)
{% set variableName = 'data' %}
是特定于上下文的,即该变量仅存在于其设置的上下文中,除非您按照Pierre-André的建议将其传递给另一个上下文。
在您的情况下,您希望能够访问页面中的变量,而不是部分变量,因此您需要将变量添加到Twig渲染上下文本身,而不仅仅是布局的上下文。为此,您需要使用模板的PHP Section将变量添加到Twig上下文中。
url = "/blog"
layout = "default"
==
<?
function onStart()
{
$this['flipbook'] = true;
}
?>
所有这一切的替代方法是将您的功能捆绑到plugin component,然后将该组件添加到任何需要它的页面。