FROM CACHE - jp_header
解決済

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

岡さん
観光客
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
110 43 39

成功

ループが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
110 43 39

成功

ループが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
110 43 39

単純に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

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