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
相关产品推荐
相关产品推荐

