こんなアプリが欲しい、このアプリの日本語版が欲しい、こんなテーマが欲しいなどの要望を書き溜めていく場所です(開発者向けイベントで共有されます)。
お世話になっております。
表題の通りにmetafieldに入れる値に「\n」が入ってしまい、metafieldに格納できません。
{% assign value = "" %} {% assign num = "" %} {% for lineItems_item in order.lineItems %} {% for customAttributes_item in lineItems_item.customAttributes %} {% assign value = value | replace: '\n',"" | append: customAttributes_item.value | strip %} {% endfor %} {% endfor %} {% assign values = value | strip | newline_to_br | split: '<br/ >' %} {%- for num in values -%} {%- if num contains "-" -%} {{ num | strip | replace: '<br>',"" | strip_newlines | date: '%-d'}} {% break %} {%- endif -%} {%- endfor -%}
エラー内容
Got error updating metafield: "Value must be an integer." For value: "\n\n\n16\n "
概要としては商品ページにitem propatyを設定しています。
そちらに誕生日をdate形式で入力できるようにしています。
そちらの値の月、日などに分けてmetafieldに入れようと思っています。
ですが、上記に書いたとおりに「\n」が入ってしまい格納できません。
こちらを解決するためのコードをご存じの方がいらっしゃいましたらご教授をお願い致します。
宜しくお願い致します。
本来、数値(整数)の値に改行が入ったことで発生したエラーのようです。
処理内容とエラー発生位置を完全に理解しきれていないのですが、処理途中で改行を含んでしまっているのかもしれません。
一旦captureで格納するのも手かもしれません。
{{ num | strip | replace: '<br>',"" | strip_newlines | date: '%-d'}}
↓↓↓
{%- # capture で格納し、余白等削除して出力 -%}
{% capture variable %}{{ num | strip | replace: '<br>',"" | strip_newlines | date: '%-d'}}{% endcapture %}
{{ variable | strip_newlines }}
出力結果が数字で構成されたstringならば、フィルタで数値化も出来ます。
(liquidに数値化フィルタは存在しないものの、0を足すと数値化します。)
{{ '22' }}
// stringの'22'が出力される
{{ '22' | plus: 0 }}
// 数値の22が出力される
尤もHTMLとして出力する分にはどちらでも同じです。
あくまで、liquid上で数値として処理させる場合に有用です。
ありがとうございます。
{% assign value = "" %}
{% assign num = "" %}
{% for lineItems_item in order.lineItems %}
{% for customAttributes_item in lineItems_item.customAttributes %}
{%if customAttributes_item.key contains 'birthday'%}
{% assign value = customAttributes_item.value | replace: '\n',"" | strip %}
{%endif%}
{% endfor %}
{% endfor %}
{% assign values = value | strip | newline_to_br | split: '<br/ >' %}
{%- for num in values -%}
{%- if num contains "-" -%}
{% capture variable %}{{ num | strip | replace: '<br>',"" | strip_newlines | date: '%-m'}}{% endcapture %}
{% break %}
{%- endif -%}
{%- endfor -%}
{{ variable | strip_newlines | plus: 0 }}
上記のコードでためしてみました。
が
Got error updating metafield: "Value must be an integer." For value: "\n\n\n\n 11"
で帰ってきました。
処理中に改行が入ってしまうというのはあっていると思いますが、
呼び出しの際にはstripで改行タグは消しているのに結果としては表示されている状態でした。
他にもコードを改変し手見ます。
解決したのでこちらで報告をさせていただきます。
{% assign value = "" %}
{% assign num = "" %}
こちらで変数を宣言していましたが、
{%- assign value = "" -%}
{%- assign num = "" -%}
と宣言することで解決しました。
{%- -%}
こちらで構築を行わないと、コード内の改行がそのまま出力されるとのことです。
いつも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