下記のコードで「pink」というコレクションのすべてのタグを取得したいのですが、
collectionsに適用されているすべてのタグが取得されてしまいます。
修正方法を教えていただければと思います。よろしくお願いいたします。
{{collections[‘pink’].tags}}
問題の内容:
「pink」コレクションのタグを取得する際、{{collections['pink'].tags}}を使用すると、コレクションに所属する商品が持つ全てのタグが取得されてしまう。実際に取得したいのは、自動コレクションの抽出条件として設定されているタグのみ。
解決方法:
collection.rulesを直接取得することはできないため、JSON形式でコレクション情報を取得し、そこから抽出条件のタグを抽出する方法が提案された。collection | jsonでJSON形式のデータを取得し、フィルタ処理(remove、splitなど)を使って必要な情報を抽出。collection.rulesから条件に使用されているタグを配列変数rules_tagsに格納するコードスニペットが提供された。現状:
JSON解析による方法で一応解決できているが、より簡単な方法があれば知りたいという状況。英語フォーラムの参考リンクも共有されている。
下記のコードで「pink」というコレクションのすべてのタグを取得したいのですが、
collectionsに適用されているすべてのタグが取得されてしまいます。
修正方法を教えていただければと思います。よろしくお願いいたします。
{{collections[‘pink’].tags}}
@Kou231 様
下記のコードで「pink」というコレクションのすべてのタグを取得したいのですが、
collectionsに適用されているすべてのタグが取得されてしまいます。
コレクション「pink」に所属している商品に付けられているタグを全て取得したい、
ということで合っているでしょうか?
もし、合っているようでしたら、
ご記載いただいた
{{collections[‘pink’].tags}}
で取得できると思うのですが、
それにも関わらず、質問されているということは、
下記いずれかということでしょうか?
もし、1でしたら、どういった情報を取得されたいか改めてお教えいただければ幸いです。
もし、2でしたら、Dawnをお使いであれば、下記のコードを「セクション > main-list-collections.liquid」の良き場所に挿入いただけば、xxx - Collections にアクセスした際、コレクションのタイトルと、そのハンドルの組み合わせが表示されますので、目的のハンドルをお探しください。
{% for collection in collections%}
- {{ collection.title }}:{{ collection.handle }}
{% endfor %}
もし、3でしたら、コレクション「pink」に所属する全商品に設定されているタグをご確認いただくと何かわかるかもしれません。
ご参考まで。
(キュー田辺)
回答ありがとうございます。
質問の意図が不明確で申し訳ございません。
コレクションの抽出条件のタグを取得したいと思っています。
{{collections[‘pink’].tags}}だとコレクションに所属する商品が持つタグすべてが抽出されてしまいます。
なので、下記でjson形式で情報を取得して、抽出条件のタグを取得しました。
{% assign collection_array = collection | json | remove: ‘"’ | remove: ‘{’ | remove: ‘}’ | remove: ‘[’ | remove: ‘]’ | split: ‘,’%}
もっと簡単な方法がありましたら教えていただければと思います。
よろしくお願いいたします。
@Kou231 様
記載いただいている内容からの推測になりますが、
下記の理解で合っているでしょうか?
上記合っているようでしたら、
下記の投稿が参考になるかと思います。
https://community.shopify.com/c/technical-q-a/collection-rules/m-p/1815018
https://community.shopify.com/c/technical-q-a/collection-rules/m-p/1815018/highlight/true#M110527
おそらく、
collection.rules
を取得されたいのだと思いますが、
どうやらそれはできないらしいので、
質問者様が実装されたように、jsonをパースしていくしかなさそうです。
簡単になるかは分かりませんが、
上記の投稿の1つを参考にして、
自動コレクションの条件がタグの場合に、
そのタグの内容を配列にして返す処理を書いてみました。
{% liquid
assign rules = collection | json | split: ',"rules":' | last | split: ']' | first | append: ']' | split: ",{"
assign rule_tags = ""
for rule in rules
if rule contains '"column":"tag"'
assign tag = rule | split: '"condition":"' | last | split: '"' | first
assign rule_tags = rule_tags | append: tag | append: ','
endif
endfor
assign rule_tags = rule_tags | remove_last: "," | split: ","
%}
rules_tagsという変数に、自動コレクションの条件に使用したタグが配列で格納されます。
ご参考まで。
(キュー田辺)