FROM CACHE - jp_header
解決済

【IF文】特定のコレクションに属するすべての商品にのみ、特定のテキストを表示させたい

design3
観光客
6 0 1

様々なコレクションがある中で、コレクション【A】に分類されている商品は配送料が高く設定されています。

そのため、コレクション【A】に分類されている商品のみ、商品ページに配送料に関するテキストを特別に表示させたいと考えています。

(A以外のコレクションに属する商品ページには、該当のテキストは非表示)

 

上記の要望を叶えるためにはどのような記述をすべきなのでしょうか。

下記のコードを「product-template.liquid」に記載しましたが、if文の記述がおかしい様で表示されません…

 {% if collection.title == 'コレクション名' %}
 <p>こちらに特別に表示させたいテキストがはいります</p> 
{% endif %}

 

商品名で指定しても良いのですが、コレクション【A】に属する商品が多いため

コレクション【A】に属するすべての商品ページで…という設定にしたいです。

※判断材料になるかは分からないのですが、コレクション【A】は自動ではなく手動で設定しています

 

よろしくお願いいたします。

1 件の受理された解決策

st_mh
探検家
40 13 11

成功

試しに以下を追記してみると分かると思います。

collectionページではタイトルが出力されますが、商品ページでは何も取得できず空白になります。

 

{{ collection.title }}

 

 

products以下の商品ページで、所属コレクションを取得するならば、以下の記述となります。

 

{% for collection in product.collections %}
  {{ collection.title }}
{% endfor %}
// 所属するコレクション名が全て出力される

 

(参考)https://shopify.dev/api/liquid/objects#product

 

product.collectionsで取得できる情報は配列です。

自分は以下のように格納されているイメージです。

 

{
collection0:{[
  title: "タイトル0",
  url: "URL0"
]},
collection1:{[
  title: "タイトル1",
  url: "URL1"
]},
collection2:{[
  title: "タイトル2",
  url: "URL2"
]},
.....
}

 

 

この配列情報から、特定のコレクション名が含まれるかを識別します。

 

①「1商品につき所属コレクションは1つだけ」という運用をされているならば、記述はシンプルです。

 

{% if product.collections[0].title == 'コレクション名' %}
 <p>こちらに特別に表示させたいテキストがはいります</p> 
{% endif %}

 

1つ目のコレクションから、タイトルを取得し、文字列一致を識別するだけですね。

 

②ただ、複数コレクションに属すならば、やはりfor文で処理を行うのが良いでしょう。(やり方はいくらかありますが)

 

{% for collection in product.collections %}
  {% if collection.title == 'コレクション名' %}
    <p>こちらに特別に表示させたいテキストがはいります</p> 
  {% endif %}
{% endfor %}

 

titleとコレクション名が一致するかを繰り返し照合し、合致する場合のみ文章を出力させる処理です。 

元の投稿で解決策を見る

2件の返信2

st_mh
探検家
40 13 11

成功

試しに以下を追記してみると分かると思います。

collectionページではタイトルが出力されますが、商品ページでは何も取得できず空白になります。

 

{{ collection.title }}

 

 

products以下の商品ページで、所属コレクションを取得するならば、以下の記述となります。

 

{% for collection in product.collections %}
  {{ collection.title }}
{% endfor %}
// 所属するコレクション名が全て出力される

 

(参考)https://shopify.dev/api/liquid/objects#product

 

product.collectionsで取得できる情報は配列です。

自分は以下のように格納されているイメージです。

 

{
collection0:{[
  title: "タイトル0",
  url: "URL0"
]},
collection1:{[
  title: "タイトル1",
  url: "URL1"
]},
collection2:{[
  title: "タイトル2",
  url: "URL2"
]},
.....
}

 

 

この配列情報から、特定のコレクション名が含まれるかを識別します。

 

①「1商品につき所属コレクションは1つだけ」という運用をされているならば、記述はシンプルです。

 

{% if product.collections[0].title == 'コレクション名' %}
 <p>こちらに特別に表示させたいテキストがはいります</p> 
{% endif %}

 

1つ目のコレクションから、タイトルを取得し、文字列一致を識別するだけですね。

 

②ただ、複数コレクションに属すならば、やはりfor文で処理を行うのが良いでしょう。(やり方はいくらかありますが)

 

{% for collection in product.collections %}
  {% if collection.title == 'コレクション名' %}
    <p>こちらに特別に表示させたいテキストがはいります</p> 
  {% endif %}
{% endfor %}

 

titleとコレクション名が一致するかを繰り返し照合し、合致する場合のみ文章を出力させる処理です。 

design3
観光客
6 0 1

ご回答ありがとうございました!

コレクションには、複数アイテムありましたので2つ目の方法で実践しました。

とても助かりました、ありがとうございました。