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

Shopify标签视图下blog.articles无法显示全部文章的问题

解决Shopify博客标签页归档只显示当前年月的问题

这个问题我之前帮不少Shopify开发者踩过坑——核心原因很简单:当你进入标签页面(比如/blogs/news/tagged/december-2017)时,blog.articles已经是经过标签过滤后的文章集合,只包含当前标签下的内容,所以你循环这个集合只能拿到2017年12月的文章,自然没法展示全量的归档信息。

要解决这个问题,关键是要获取整个博客的所有文章,而不是当前页面过滤后的子集。具体实现步骤如下:

1. 替换文章集合为全量博客文章

在Liquid中,你可以通过blogs['你的博客handle'].articles来获取指定博客的全部文章,而不是依赖当前页面的blog.articles。比如你的博客handle是news,就用blogs['news'].articles,这个集合在任何页面(包括标签页、文章详情页)都能返回该博客的所有文章。

2. 去重年月并输出归档链接

接下来还是用你熟悉的if/unless逻辑去重年月,但基于全量文章集合处理。下面是完整的侧边栏归档代码示例:

{% comment %} 替换成你实际的博客handle,比如news {% endcomment %}
{% assign all_articles = blogs['news'].articles %}
{% assign processed_dates = '' | split: ',' %}

<div class="blog-archive-sidebar">
  <h3>博客归档</h3>
  <ul class="archive-list">
    {% for article in all_articles %}
      {% comment %} 提取文章发布的年份和带年份的月份名称 {% endcomment %}
      {% assign article_year = article.published_at | date: '%Y' %}
      {% assign article_month_name = article.published_at | date: '%B %Y' %}
      {% comment %} 用「年份-月份数字」作为唯一标识,避免重复输出同一个年月 {% endcomment %}
      {% assign date_identifier = article_year | append: '-' | append: article.published_at | date: '%m' %}
      
      {% comment %} 只输出未处理过的年月 {% endcomment %}
      {% unless processed_dates contains date_identifier %}
        <li>
          {% comment %} 生成和你标签匹配的URL,handleize会自动转成december-2017这种格式 {% endcomment %}
          <a href="/blogs/news/tagged/{{ article_month_name | handleize }}">
            {{ article_month_name }}
          </a>
        </li>
        {% comment %} 将已处理的年月标识加入数组,避免重复 {% endcomment %}
        {% assign processed_dates = processed_dates | push: date_identifier %}
      {% endunless %}
    {% endfor %}
  </ul>
</div>

3. 关键细节说明

  • 博客handle替换:一定要把blogs['news'].articles中的news改成你自己博客的handle(可以在Shopify后台博客设置里查看)。
  • 标签URL匹配:article_month_name | handleize会自动把December 2017转换成december-2017,和你现有的标签页面URL完全匹配,不用手动修改标签命名。
  • 性能注意:如果你的博客文章超过50篇,Shopify默认只会返回前50篇,这时候归档会缺失更早的内容。解决办法是:
    • 如果你用的是Shopify Plus,可以通过limit参数获取更多文章(最多200篇);
    • 普通店铺可以考虑用Metafield预先存储所有归档年月,或者通过AJAX加载更多文章来补充归档。

这样修改后,不管你在博客首页还是任何标签页面,侧边栏都会显示全量的博客归档信息啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:21:00