Shopify Liquid:如何从Metafields获取Article对象并显示文章标题
解决方法
要显示博客文章标题而非URL,核心是获取对应的Article对象,分两种场景处理:
一、推荐方案:将Metafield改为文章引用类型
如果可以修改Shopify后台的Metafield设置,这是最可靠的方式:
- 在Shopify后台找到该自定义Metafield,将类型改为文章引用列表(List of Article references)
- 修改Liquid代码,直接遍历引用的文章对象:
{% for article in product.metafields.custom.related_product_with_blog_post.value %} <div><a href="{{ article.url }}">{{ article.title }}</a></div> {% endfor %}
这样就能直接调用article.title输出标题,同时article.url获取正确链接,无需解析URL,稳定性更高。
二、兼容方案:通过URL解析获取文章对象
如果无法修改Metafield类型(只能存储URL),可以通过拆分URL提取博客和文章的handle,再匹配到Article对象:
{% for field in product.metafields.custom.related_product_with_blog_post.value %} {% assign url_parts = field.url | split: '/' %} {% assign blog_handle = url_parts[2] %} {% assign article_handle = url_parts[3] %} {% assign target_article = blogs[blog_handle].articles[article_handle] %} {% if target_article %} <div><a href="{{ target_article.url }}">{{ target_article.title }}</a></div> {% else %} <!-- 文章不存在时的 fallback,显示原URL --> <div><a href="{{ field.url }}">{{ field.url }}</a></div> {% endif %} {% endfor %}
注意:这种方式依赖URL格式固定为/blogs/博客handle/文章handle,如果URL结构变化会失效。
内容的提问来源于stack exchange,提问作者User1987
相关产品推荐
相关产品推荐

