FROM CACHE - jp_header
解決済

自動コレクションの条件を判定する方法

myao
Shopify Partner
4 0 0

liquidで自動コレクションの条件を判定する方法があれば知りたいです。

例えば、自動コレクションの条件に「商品の販売元」が設定されているかどうか、といった具合です。

 

また、自動コレクションかどうか、という判定もできるようでしたら知りたいです。

 

初心者で申し訳ございませんがよろしくお願いいたします。

1 件の受理された解決策

Jizo_Inagaki
Shopify Partner
1024 384 703

成功

初心者とのことなのでお勧めできませんが、興味があったので試したところ以下のような書き方で一応判定はできるようでした。

 

{%- liquid
  assign collection_array = collection | json | remove: '"' | remove: '{' | remove: '}'  | remove: '[' | remove: ']' | split: ','
  for collection_array_elem in collection_array
    if collection_array_elem contains 'column'
        assign collection_columns = collection_columns | append: ',' | append: collection_array_elem | remove: 'column:'
    endif
  endfor
  assign collection_columns_array = collection_columns | remove_first: "," | split: ','
-%}

{% if collection_columns_array contains 'vendor'%}
vendor(商品の販売元)が設定されています
{% else %}
vendor(商品の販売元)が設定されていません
{%  endif %}

 

以下注記や補足です。

  • コレクションを表示するliquidに記載する前提
  • 商品名など意図しない箇所にcolumnやvendorが含まれていると意図した動作にならない
  • {{ collection | json }}でcollectionオブジェクト中身を覗いて作成した非公式な手法であり、今後のアップデートで中身が変更されると動作しない
  • チェックはあまり行っていない 
  • 手動の場合はcolumn(正確にはcolumnの親となるrules)が含まれないので、その点を調べれば判定可能と思われる

 

なお、誤判定リスクが高いですが以下のような大雑把な判定も可能ではあります。

 

{% assign collection_json = collection | json %}
{% if collection_json contains 'vendor' %}
vendor(商品の販売元)が設定されています
{% else %}
vendor(商品の販売元)が設定されていません
{% endif %}

 

こちらは商品名など意図しない箇所にvendorが含まれていると意図した動作になりません

 

 

以上ですが、既に記載しましたとおり初心者とのことなのでサンプルコードの利用はお勧めできません。

どうしても実現したいという場合はliquidを学ばれるか、パートナーやエキスパートに依頼されることをお勧めします。

Jizo_Inagaki | フリーランスのwebデザイナー
- テーマのカスタム承れます。
- 記載した回答で解決できましたらベストソリューションの承認をお願いします。
- DMや指名による対応はご依頼として有料でのみ承ります。

元の投稿で解決策を見る

2件の返信2

Qcoltd
Shopify Partner
1051 429 417

collection objectのドキュメントを見る限り、質問者様のご要望に沿うattiributeは存在しないようです。

https://shopify.dev/api/liquid/objects/collection

 

私が思いつくやり方は下記です。

 

メタフィールドをご用意いただき、

そちらに、自動コレクションかどうかや、コレクションの条件を入力しておき、

それらを判定に使用する。

 

しかし、これは、ちょっと大変そうですね。

 

もしかしたら、

より良いやり方やアプリを紹介してくれる方が現れるかもしれませんので、

もう少しお待ちいただくのが良いかもしれません。

 

(キュー田辺)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/

Jizo_Inagaki
Shopify Partner
1024 384 703

成功

初心者とのことなのでお勧めできませんが、興味があったので試したところ以下のような書き方で一応判定はできるようでした。

 

{%- liquid
  assign collection_array = collection | json | remove: '"' | remove: '{' | remove: '}'  | remove: '[' | remove: ']' | split: ','
  for collection_array_elem in collection_array
    if collection_array_elem contains 'column'
        assign collection_columns = collection_columns | append: ',' | append: collection_array_elem | remove: 'column:'
    endif
  endfor
  assign collection_columns_array = collection_columns | remove_first: "," | split: ','
-%}

{% if collection_columns_array contains 'vendor'%}
vendor(商品の販売元)が設定されています
{% else %}
vendor(商品の販売元)が設定されていません
{%  endif %}

 

以下注記や補足です。

  • コレクションを表示するliquidに記載する前提
  • 商品名など意図しない箇所にcolumnやvendorが含まれていると意図した動作にならない
  • {{ collection | json }}でcollectionオブジェクト中身を覗いて作成した非公式な手法であり、今後のアップデートで中身が変更されると動作しない
  • チェックはあまり行っていない 
  • 手動の場合はcolumn(正確にはcolumnの親となるrules)が含まれないので、その点を調べれば判定可能と思われる

 

なお、誤判定リスクが高いですが以下のような大雑把な判定も可能ではあります。

 

{% assign collection_json = collection | json %}
{% if collection_json contains 'vendor' %}
vendor(商品の販売元)が設定されています
{% else %}
vendor(商品の販売元)が設定されていません
{% endif %}

 

こちらは商品名など意図しない箇所にvendorが含まれていると意図した動作になりません

 

 

以上ですが、既に記載しましたとおり初心者とのことなのでサンプルコードの利用はお勧めできません。

どうしても実現したいという場合はliquidを学ばれるか、パートナーやエキスパートに依頼されることをお勧めします。

Jizo_Inagaki | フリーランスのwebデザイナー
- テーマのカスタム承れます。
- 記載した回答で解決できましたらベストソリューションの承認をお願いします。
- DMや指名による対応はご依頼として有料でのみ承ります。