Liquid、JavaScriptなどに関する質問
初心者です。
メタフィールドは各カテゴリごとのカスタムデータ定義、メタオブジェクトはショップ全体のカスタムデータ定義と理解しています。
Liquidもかじった程度です。
商品ページにコレクションで作成したページのテキストとリンクを記載したいと考えています。
メタフィールドにて下記の通りコレクションのフィールドを定義しました。
商品ページで該当のコレクションを選び、
テーマの設定で「カスタムLiquid」ブロックに下記コードを入力しましたが、プレビューでは「CollectionList Drop」と表示され、コレクション名が表示されません。
{% if product.metafields.custom.brands.value != blank %} <div> {{product.metafields.custom.brands.value}} </div> {% endif %}
コレクション名とコレクションのリンクを記載するにはどうしたら良いのでしょうか。
解決済! ベストソリューションを見る。
成功
ご返信ありがとうございます!
回答いただいた確認項目はどちらも問題なくできました。
メタフィールドで取得する情報がgidになってしまうようなので、下記を参考にidからhandleを取得する方法にしてやりたいことが実現できました!
How to get product Information by Product ID ?
https://community.shopify.com/c/shopify-apps/how-to-get-product-information-by-product-id/td-p/16042...
ご参考までにコード貼っておきます。
{% if product.metafields.custom.brands %}
{% assign split_id = product.metafields.custom.brands | split:"/" %}
{% assign the_id = split_id |last %}
{% assign collection_id = the_id | times:1 %}
{% assign collection_handle = collections | where: 'id', collection_id | first %}
{% assign brands = collections[collection_handle.handle] %}
{% if brands %}
<a href="{{ brands.url }}">{{ brands.title }}</a>
{% else %}
<p>関連するコレクションは見つかりませんでした。</p>
{% endif %}
{% else %}
<p>関連するコレクションは設定されていません。</p>
{% endif %}
この度は早急なご回答大変助かりました。
以下でどうでしょう?
{% if product.metafields.custom.brands %}
{% assign collection_handle = product.metafields.custom.brands %}
{% assign brands = collections[collection_handle] %}
{% if brands %}
<a href="{{ brands.url }}">{{ brands.title }}</a>
{% else %}
<p>関連するコレクションは見つかりませんでした。</p>
{% endif %}
{% else %}
<p>関連するコレクションは設定されていません。</p>
{% endif %}
早急なご回答ありがとうございます!
ご教示いただいた内容で修正したのですが、コレクションのリンクは表示されませんでした。
if分の条件には合致しているようで、試しに下記のように<p>aaa</p>を追加したらプレビュー画面に「aaa」は表示されました。
{% if product.metafields.custom.brands %}
{% assign collection_handle = product.metafields.custom.brands %}
{% assign brands = collections[collection_handle] %}
{% if brands %}
<p>aaa</p>
<a href="{{ brands.url }}">{{ brands.title }}</a>
{% else %}
<p>関連するコレクションは見つかりませんでした。</p>
{% endif %}
{% else %}
<p>関連するコレクションは設定されていません。</p>
{% endif %}
{{collection_handle}}には["gid://shopify/Collection/コレクションID"]が入っているようなのですが、こちらがbrandsに代入する際にうまくいっていないのでしょうか?
ご返信ありがとうございます。
であれば、ひとつひとつ確認しながら進めて、最終的に別の形式のハンドルをcollectionsに渡して値を引っ張ってくるといいかもしれません。
まず以下のコードで、ストアのすべてのコレクションのハンドルとタイトルリンクを表示することができるはずです(ここがまずうまくいかなかったらご指摘ください)
{% for collection in collections %}
<li>{{ collection.handle }}:{{- collection.title | link_to: collection.url }}</li>
{% endfor %}
すると、表示したいコレクションのハンドルが何かがわかるはずなので、
{% assign brands = collections['ハンドル名'] %}
と、直接ハンドル名の文字列を渡してあげてください。うまくいけば、brandsに正しいコレクションが設定されると思います。
参考までに、collectionsについての公式ドキュメントはこちらです。
https://shopify.dev/docs/api/liquid/objects/collections#collections-access-a-specific-collection
成功
ご返信ありがとうございます!
回答いただいた確認項目はどちらも問題なくできました。
メタフィールドで取得する情報がgidになってしまうようなので、下記を参考にidからhandleを取得する方法にしてやりたいことが実現できました!
How to get product Information by Product ID ?
https://community.shopify.com/c/shopify-apps/how-to-get-product-information-by-product-id/td-p/16042...
ご参考までにコード貼っておきます。
{% if product.metafields.custom.brands %}
{% assign split_id = product.metafields.custom.brands | split:"/" %}
{% assign the_id = split_id |last %}
{% assign collection_id = the_id | times:1 %}
{% assign collection_handle = collections | where: 'id', collection_id | first %}
{% assign brands = collections[collection_handle.handle] %}
{% if brands %}
<a href="{{ brands.url }}">{{ brands.title }}</a>
{% else %}
<p>関連するコレクションは見つかりませんでした。</p>
{% endif %}
{% else %}
<p>関連するコレクションは設定されていません。</p>
{% endif %}
この度は早急なご回答大変助かりました。
解決してよかったです!🎉
サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 6, 20242023年初頭、Shopifyペイメントアカウント、及びShopifyアカウント全体のセキュリティを強化する為の変更が適用されました。ユーザーのアカウントセキュリティを強化す...
By Mirai Sep 29, 2024概要: 年末/年明けは、消費者が最もショッピングを行う時期の一つです。特に、ブラックフライデー・サイバーマンデー(BFCM)は、世界中で注目される大規模なセールイベントであ...
By JapanGuru Sep 25, 2024