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

Shopify如何在<body id='handle'>中统一获取各类页面的handle?

统一获取Shopify各页面Handle作为Body ID的方案

当然可行,你之前的代码问题在于只针对单页(page对象)做了判断,但不同页面类型对应的数据对象不一样——比如产品页用product对象、集合页用collection对象,直接调用page.handle在非单页页面会返回空值甚至报错。

用Liquid的case语句可以清晰统一地处理所有页面类型,实现你要的bodyID变量:

{% assign bodyID = '' %}
{% case template.type %}
  {% when 'index' %}
    {% assign bodyID = 'index' %}
  {% when 'product' %}
    {% assign bodyID = product.handle %}
  {% when 'collection' %}
    {% assign bodyID = collection.handle %}
  {% when 'page' %}
    {% assign bodyID = page.handle %}
  {% when 'blog' %}
    {% assign bodyID = blog.handle %}
  {% when 'article' %}
    {% assign bodyID = article.handle %}
  {% when '404' %}
    {% assign bodyID = 'page-not-found' %}
  {% else %}
    {% assign bodyID = template.name %}
{% endcase %}

然后直接在body标签里调用这个变量:

<body id="{{ bodyID }}" class="{{ template.name }} {{ bodyID }}">

补充说明:

  • 首页(index)没有对应的handle数据对象,所以手动指定index作为ID,你也可以改成自己需要的值
  • template.type会匹配模板的主类型(比如自定义模板product.featured的template.type是product),这样自定义模板也能自动复用对应类型的handle逻辑
  • 对于404等特殊页面,你可以自定义ID,或者直接用template.name(即404)
  • 如果有其他自定义页面类型,只需要在case里新增对应when分支即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:19:50