Liquid、JavaScriptなどに関する質問
初心者質問で大変恐れ入ります。
構築中の店舗で、下記サイトを参考にバリエーションを画像リンク化したのですが
表示される商品とされない商品が混在している状態で困っています。
https://neo.astrowave.jp/blog/10092/
▼実際に使っている問題部分のソース▼
{% assign gids = product.metafields.custom._other_color | split: '","' %}
{% if product.metafields.custom._other_color %}
{% #### _other_colorがある複数カラーリンクの場合 #### %}
<div class="li_cv">
{% for gid in gids %}
{% assign split_id = gid | remove: '["' | remove: 'gid://shopify/Product/' | remove: '"]' | plus:0 %}
{% paginate collections.all.products by 1000 %}
{% for product in collections.all.products %}
{% if product.id == split_id %}
【要素を表示するソース(略)】
{% endif %}
{% endfor %}
{% endpaginate %}
{% endfor %}
</div>
{% else %}〜以下略
メタフィールド「.custom._other_color」に登録された複数の商品ID(gid)から、
不要な文字を抜いたものを全商品分のproduct.idと一致するかをチェックし
一致した場合に【要素を表示するソース(略)】部分が作成・表示される想定のものです。
商品が表示されない場合は、「<div class="li_cv">〜</div>」の中身が空の状態で出力されてしまいます。
◆試してみたこと:
①{% if product.id == split_id %}とその{% endif %}を削除し、
{% paginate collections.all.products by 1000 %}の数字を登録商品数より多くする
→多くの商品が表示されるものの、表示されない商品は出てこない
②メタフィールド「.custom._other_color」に本来登録したい商品とは別のものを追加する
→追加した商品だけが表示される
以上により、件名に記載したようなことが起きているのかな?と考えた次第です。
なお、商品数が多いためCSVで一括アップロードをしています。
入力されている値はエラーの有無に関わらず「(商品ハンドル); (商品ハンドル); …」(セミコロン区切り)で
統一されており、記入ミスはありません。
手動登録とCSV登録のどちらでもエラーが発生するため、原因が掴めない状況です。
もしお心当たりがあれば、原因究明と改善にお力をお貸しいただけると助かります。
解決済! ベストソリューションを見る。
成功
@FTSSK 様
https://shopify.dev/docs/api/liquid/tags/paginate
こちらをご覧いただきたいのですが、
page_sizeは
The number of array items to include per page, between 1 and 50.
とあり、
1から50までしか指定できないので、
下記のように1000を指定しても、
{% paginate collections.all.products by 1000 %}
実際に取得できる商品数は、50件が上限なのではないかと思います。
参考にされているページのやり方は、
ストアに登録されている全ての商品を取得できなければ成立しません。
そして、そのような方法はShopifyには標準的には用意されていないはずです。
(少なくとも私は方法を見つけられませんでしたが、もしかしたら方法があるかもしれません。)
カラー違いの商品ごとにコレクションを作成するのが、簡単ではないでしょうか?
ご参考まで。
(キュー田辺)
成功
@FTSSK 様
https://shopify.dev/docs/api/liquid/tags/paginate
こちらをご覧いただきたいのですが、
page_sizeは
The number of array items to include per page, between 1 and 50.
とあり、
1から50までしか指定できないので、
下記のように1000を指定しても、
{% paginate collections.all.products by 1000 %}
実際に取得できる商品数は、50件が上限なのではないかと思います。
参考にされているページのやり方は、
ストアに登録されている全ての商品を取得できなければ成立しません。
そして、そのような方法はShopifyには標準的には用意されていないはずです。
(少なくとも私は方法を見つけられませんでしたが、もしかしたら方法があるかもしれません。)
カラー違いの商品ごとにコレクションを作成するのが、簡単ではないでしょうか?
ご参考まで。
(キュー田辺)
キュー田辺様
ご返信ありがとうございます!
試してみたこと:①{% if product.id == split_id %}とその{% endif %}を削除し〜で、
「by 1000」と指定すると1000件はでてきたためMAXそこまでは読み込んでくれるようではありました。
(by 50と指定すると50件が出てくるので、上限の実態としては1000件かと思われます。)
おっしゃるとおり、別途絞り込み用のコレクションのハンドルを入力するメタフィールドを追加して
表示させたい商品が含まれているコレクション内から呼び出すようにしてうまくいきました!
ご助力ありがとうございます。
Shopify アカデミーの学習パスと認定スキルバッジExpanding Your Shopify Business Internationallyを活用して、国際的にビジネ...
By Shopify Feb 7, 2025Shopify アカデミーの学習パスB2B on Shopify:立ち上げとカスタマイズで卸売販売に進出しましょう。これら3つの無料コースは、ShopifyストアでB2B機能...
By Shopify Jan 31, 2025サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 6, 2024