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 %}
この度は早急なご回答大変助かりました。
解決してよかったです!🎉
いつもShopifyをご利用いただき、ありがとうございます。 Shopifyは、皆様の日本語での利用体験の向上に努めております。さらなる改善のために皆様のご意見をお寄せい...
By JasonH May 9, 2025Shopify アカデミーの学習パスと認定スキルバッジExpanding Your Shopify Business Internationallyを活用して、国際的にビジネ...
By Shopify Feb 7, 2025Shopify アカデミーの学習パスB2B on Shopify:立ち上げとカスタマイズで卸売販売に進出しましょう。これら3つの無料コースは、ShopifyストアでB2B機能...
By Shopify Jan 31, 2025