全ブログ記事のURLを取得する [Shopify]

Shopifyでは複数のブログを作ることができますが、それらは独立したブログとなるので一括操作するためのハンドルが用意されていません。

たとえば、 「Blog_1」「Blog_2」という2つのブログをまとめる「All」 というブログを作って、新着記事をリスト表示したいと思うとき、最適解ではありませんが以下のような手段で対応することができます。

{% for link in linklists.blogs.links %}
   {% assign blog = link.object %}
   {%- for article in blog.articles limit: 4 -%}
      <a href="{{ article.url }}">{{ article.title }}</a>
   {%- endfor -%}
{%- endfor -%}

メニューを作成してlinklistsをつかって操作する

あらかじめ、Shopifyの管理画面 > メニュー にすすみ新規メニューを追加します。

メニューにはBlog_1とBlog_2を追加し、「blogs」というメニュー名をつけておきます。

linklists

linklists は作成したメニューの内容を操作するためのオブジェクトです。これで先ほど作成したblogsを操作します。

{%- comment -%} 「blogs」メニューのリンクをループ {%- endcomment -%}
{%- for link in linklists.blogs.links -%}
  {%- comment -%} link.object(取得したblog)をblogに代入 {%- endcomment -%}
  {%- assign blog = link.object -%}
  {%- comment -%} あとは通常 {%- endcomment -%}
  {%- for article in blog.articles -%}
     <a href="{{ article.url }}">{{ article.title }}</a>
  {%- endfor -%}
{%- endfor -%}

Blog_1をループ処理して次にBlog_2。という順番になります。

参考

The linklist object : https://shopify.dev/api/liquid/objects/linklist

The link object : https://shopify.dev/api/liquid/objects/link