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

CMS主题开发中能否在不同页面过滤展示指定Twig block?

Twig 分页面显示Block实现方案

完全可以通过Twig代码实现该需求,以下是两种实现方案,优先推荐第一种更稳定的方案:

最优方案:基于CMS内置页面属性判断(推荐)

该方案比URL判断稳定性更高,不会因为域名修改、页面别名调整、URL加查询参数导致判断失效,实现步骤如下:

  • 首先在当前Twig模板中加入调试代码,查看CMS注入的全局上下文变量,找到页面唯一标识字段:{{ dump(_context) }}
  • 通常主流CMS都会提供page.id(页面唯一ID)、page.slug(页面别名)、page.type(页面类型)这类固定字段,例如你要显示的A页面slug为a-page,直接给对应Block加判断逻辑即可:
{# 仅在slug为a-page的页面显示该Block #}
{% if page.slug == 'a-page' %}
  {% block your_custom_block %}
    <!-- 这里放你要渲染的Block内容 -->
  {% endblock %}
{% endif %}

如果是同一类页面都要显示该Block,直接用page.type字段判断即可,后续新增同类型页面无需修改判断规则。

备选方案:基于URL判断

如果找不到对应的CMS内置页面标识,可以用URL匹配实现,示例代码如下:

{# 匹配当前页面路径为/a-page/的情况,可根据自己的URL规则调整匹配逻辑 #}
{% if app.request.getPathInfo() == '/a-page/' %}
  {% block your_custom_block %}
    <!-- 这里放你要渲染的Block内容 -->
  {% endblock %}
{% endif %}

注意:该方案需要尽可能精准匹配URL规则,避免带查询参数、多域名访问时出现判断错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:54:03