FROM CACHE - jp_header
このコミュニティはピアツーピアサポートに移行しました。Shopify サポートは今後、このコミュニティへのサービスを提供いたしません。これからもぜひ、他のマーチャントやパートナーとつながり、サポートし合い、経験を共有してください。 当社の行動規範に違反する行動や削除を希望するコンテンツがありましたら、引き続きご報告ください

メタフィールドで選択したコレクションのリンクを商品ページに追加したい

解決済

メタフィールドで選択したコレクションのリンクを商品ページに追加したい

staff_m
Shopify Partner
3 1 2

初心者です。

 

メタフィールドは各カテゴリごとのカスタムデータ定義、メタオブジェクトはショップ全体のカスタムデータ定義と理解しています。

Liquidもかじった程度です。

 

商品ページにコレクションで作成したページのテキストとリンクを記載したいと考えています。

メタフィールドにて下記の通りコレクションのフィールドを定義しました。

staff_m_0-1733817188502.png

 

商品ページで該当のコレクションを選び、

 

テーマの設定で「カスタムLiquid」ブロックに下記コードを入力しましたが、プレビューでは「CollectionList Drop」と表示され、コレクション名が表示されません。

{% if product.metafields.custom.brands.value != blank %}
<div>
{{product.metafields.custom.brands.value}}
</div>
{% endif %}

staff_m_1-1733817533827.png

 

コレクション名とコレクションのリンクを記載するにはどうしたら良いのでしょうか。

1 件の受理された解決策
staff_m
Shopify Partner
3 1 2

成功

ご返信ありがとうございます!

 

回答いただいた確認項目はどちらも問題なくできました。

 

メタフィールドで取得する情報が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 %}

 

 

この度は早急なご回答大変助かりました。

元の投稿で解決策を見る

5件の返信5

ROUTE06_baba
Shopify Partner
62 11 46

以下でどうでしょう?

{% 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 %}
株式会社ROUTE06 Product Manager
ShopifyによるEC構築・リプレースをはじめ、様々なSaaS統合ソリューションを提供しております。
ご相談はこちらからお気軽にお問い合わせください。
staff_m
Shopify Partner
3 1 2

早急なご回答ありがとうございます!

 

ご教示いただいた内容で修正したのですが、コレクションのリンクは表示されませんでした。

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に代入する際にうまくいっていないのでしょうか?

ROUTE06_baba
Shopify Partner
62 11 46

ご返信ありがとうございます。

 

であれば、ひとつひとつ確認しながら進めて、最終的に別の形式のハンドルを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

株式会社ROUTE06 Product Manager
ShopifyによるEC構築・リプレースをはじめ、様々なSaaS統合ソリューションを提供しております。
ご相談はこちらからお気軽にお問い合わせください。
staff_m
Shopify Partner
3 1 2

成功

ご返信ありがとうございます!

 

回答いただいた確認項目はどちらも問題なくできました。

 

メタフィールドで取得する情報が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 %}

 

 

この度は早急なご回答大変助かりました。

ROUTE06_baba
Shopify Partner
62 11 46

解決してよかったです!🎉

株式会社ROUTE06 Product Manager
ShopifyによるEC構築・リプレースをはじめ、様々なSaaS統合ソリューションを提供しております。
ご相談はこちらからお気軽にお問い合わせください。