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

初心者です、教えて頂きたいです。

解決済

初心者です、教えて頂きたいです。

岡さん
観光客
3 0 0

 

order prinerを使用し、領収書を作成しています。スクリーンショット 2023-11-09 160134.png

入力されている商品項目(上記写真の2,3列目、今回は2列)+何も入力されていない余白の列(tr)を追加し10列にしたいと考えています。

for文を使い、上から入力されている商品項目の入力が完了した後、余白のtrを出力し、limitで10回繰り返し、合計10列にしたいのですが、入力されている商品項目分2回で終了してしまいます。(※一枚目写真)

スクリーンショット 2023-11-09 160050.png

このfor,if文が動かない理由をご教授頂きたいです。
また、根本的にもっと良いやり方があればご教授いただけると幸いです。

1 件の受理された解決策

ogasawarakyohei
Shopify Partner
119 46 46

成功

ループが2回で終了している理由は、line_itemsのlengthが2だからです。

for文は指定した配列の要素数分しか回りません。

 

今回のように10回固定でループを回したい場合は、Rangeを指定するやり方があります。

参考: https://shopify.dev/docs/api/liquid/tags/for#for-range

 

下記に例を記載します。

このように記載することで、line_itemsの数によらず、10回のループがまわり、かつ1つずつline_itemを処理することができます。

(line_itemsの数よりも多い順目では、line_itemになにも入っていないことに注意してください)

 

{% for i in (0..9) -%}
  {%- assign line_item = line_items[i] -%}
  {{ line_item.title }}
{%- endfor %}

 

以上、参考になりましたら幸いです。

小笠原 京平 | 株式会社Tsun | RuffRuff アプリ
・私の回答が役に立ったら、いいね! ボタンをクリックして教えてください!
Shopify 開発で役に立つ情報を発信していますので、テックブログおすすめ Shopifyアプリ もぜひご参照ください。

元の投稿で解決策を見る

4件の返信4

ogasawarakyohei
Shopify Partner
119 46 46

成功

ループが2回で終了している理由は、line_itemsのlengthが2だからです。

for文は指定した配列の要素数分しか回りません。

 

今回のように10回固定でループを回したい場合は、Rangeを指定するやり方があります。

参考: https://shopify.dev/docs/api/liquid/tags/for#for-range

 

下記に例を記載します。

このように記載することで、line_itemsの数によらず、10回のループがまわり、かつ1つずつline_itemを処理することができます。

(line_itemsの数よりも多い順目では、line_itemになにも入っていないことに注意してください)

 

{% for i in (0..9) -%}
  {%- assign line_item = line_items[i] -%}
  {{ line_item.title }}
{%- endfor %}

 

以上、参考になりましたら幸いです。

小笠原 京平 | 株式会社Tsun | RuffRuff アプリ
・私の回答が役に立ったら、いいね! ボタンをクリックして教えてください!
Shopify 開発で役に立つ情報を発信していますので、テックブログおすすめ Shopifyアプリ もぜひご参照ください。
岡さん
観光客
3 0 0

 

ご返信ありがとうございます。
Rangeを指定する、指定するとline_itemsの数によらず、10回のループがまわる事、理解しました。ありがとうございます。
スクリーンショット 2023-11-09 173648.png
このように書いてみましたが、二回で止まってしまいます。
単純にif文が間違っているのでしょうか?
何度も申し訳ありません、よろしくお願いいたします。

ogasawarakyohei
Shopify Partner
119 46 46

単純にif文が間違っています。

上述しているように、line_itemsの個数以上の順目の場合(今回の場合では3回目以降)、line_itemは何も入っていない nil です。

したがって3回目以降は、if文のelse内で処理されています。

 

例を記載しますので、適当に読み替えてください。

{% for i in (0..9) -%}
  {%- assign line_item = line_items[i] -%}
  {%- unless line_item == nil -%}
    {{ line_item.title }}
  {%- else -%}
    {% echo "test" %}
  {%- endunless -%}
{%- endfor %}

 

小笠原 京平 | 株式会社Tsun | RuffRuff アプリ
・私の回答が役に立ったら、いいね! ボタンをクリックして教えてください!
Shopify 開発で役に立つ情報を発信していますので、テックブログおすすめ Shopifyアプリ もぜひご参照ください。
岡さん
観光客
3 0 0

ご返信ありがとうございます!
おかげさまで解決いたしました、ありがとうございました!