Shopify主题中无需显式指定类型获取当前页面对象的方法咨询
解决方案
存在不需要case语句的实现方案,你可以通过Liquid的动态变量取值语法直接从全局上下文获取对应页面对象,仅需一行代码即可实现。
核心实现代码
{% assign obj = context[request.page_type] %}
实现原理
Shopify的request.page_type返回值和全局页面对象的变量名完全匹配,比如商品页返回product、分类页返回collection、单页面返回page、文章页返回article,通过context[变量名]的写法可以直接从全局上下文取出对应的页面对象,无需手动做类型判断。
支持的页面类型
- 商品页(product)
- 分类页(collection)
- 自定义单页(page)
- 文章页(article)
- 博客首页(blog)
- 购物车页(cart)
- 搜索结果页(search)
完整使用示例
{% assign obj = context[request.page_type] %} {% if obj != blank %} Handle: {{ obj.handle }} 标题: {{ obj.title }} 发布时间: {{ obj.published_at }} {% endif %}
注意事项
- 如果是特殊自定义页面或者404页,
obj会返回空值,可通过上方的if obj != blank判断做兜底逻辑 - 该语法是Shopify Liquid原生支持的特性,兼容所有在售主题版本,不需要额外配置
内容的提问来源于stack exchange,提问作者Karim Tarek
相关产品推荐
相关产品推荐

