You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SULU中为所有页面创建可后台配置的Twig模板头部

SULU 全站全局头部配置落地步骤

以下是无需修改单页控制器、全站生效的实现方案:

1. 后台新增全局开关配置项

直接在对应站点的webspace配置文件(路径为 config/webspaces/[你的站点标识].xml)的<settings>节点下新增布尔类型配置:

<settings>
    <!-- 其他已有配置 -->
    <setting key="show_global_header" type="boolean" default_value="true">
        <meta>
            <title lang="zh">是否显示全站公共头部</title>
            <title lang="en">Show Global Header</title>
        </meta>
    </setting>
</settings>

配置完成后清理后台缓存,即可在站点设置页看到对应的复选框控件。

2. 全局模板引入判断逻辑

找到全站所有页面继承的基础布局模板(通常为 templates/base.html.twig),在页面最顶部对应位置加入渲染判断:

{# 读取webspace全局配置判断是否渲染头部 #}
{% if sulu_webspace_setting('show_global_header') is same as(true) %}
    {# 引入你已经开发完成的头部Twig组件 #}
    {{ include('components/global_header.html.twig') }}
{% endif %}

你之前开发的头部链接后台修改逻辑无需调整,组件内部可正常读取对应配置值。

可选优化:自定义配置存储场景适配

如果你把开关配置存放在自定义配置实体而非webspace设置中,可以通过事件订阅器全局注入配置到所有Twig模板:

  • 新建事件订阅器监听 Symfony\Component\HttpKernel\KernelEvents::CONTROLLER 事件
  • 事件触发时读取你的配置值,通过 Twig\Environment 的 addGlobal 方法注入为全局变量
  • 模板中直接使用注入的全局变量做判断即可,无需重复调用配置读取逻辑

内容的提问来源于stack exchange,提问作者Mastop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:54:05