我可以将 Twig 块从一页过滤到另一页吗?

Posted

技术标签:

【中文标题】我可以将 Twig 块从一页过滤到另一页吗?【英文标题】:Can I fliter out a Twig block from one page to another? 【发布时间】:2021-12-12 16:11:35 【问题描述】:

希望有人能指教。 我正在为 CMS 设计一个主题。我有一个基于 twig 的页面作为主题模板,因此很明显,不同类型页面的所有 Twig 块都在一个文档中。 CMS 有两种类型的页面,可以通过页面构建器创建和查看。 目前,所有的 Twig 块都出现在页面 A 和页面 B 中,从字体端开始。 我是否可以编写一些 Twig 代码,使我能够在 A 页上显示 Twig 块,但不能在 B 页上显示? 我知道我需要某种过滤器,但我是按 url 过滤,还是有更好的方法? 感谢您能给我的任何帮助。

【问题讨论】:

请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

为了防止来自扩展模板的块显示您可以覆盖块

main.twig

% block foo %
    Foo
% endblock %

% block bar %
    Bar
% endblock %

child.twig

% extends "main.twig" %
% block foo %% endblock %

上面的 sn-p 只会显示Bar

更进一步,您可以使用函数 parent() 覆盖一个块并仍然执行扩展模板的原始块

child.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 %

demo

【讨论】:

非常感谢您提供的信息。我试试看:)

以上是关于我可以将 Twig 块从一页过滤到另一页吗?的主要内容,如果未能解决你的问题,请参考以下文章

将对象从一页移动到另一页?

从一页切换到另一页

如何在单页应用程序中以角度将数据从一页传递到另一页

通过DrawerNavigator中的StackNavigator将数据从一页传递到另一页

如何使用 StreamBuilder 从一页导航到另一页

将自定义事件表单从一页发送到另一页