こんなアプリが欲しい、このアプリの日本語版が欲しい、こんなテーマが欲しいなどの要望を書き溜めていく場所です(開発者向けイベントで共有されます)。
お世話になっております。
表題の通りに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 = "" -%}
と宣言することで解決しました。
{%- -%}
こちらで構築を行わないと、コード内の改行がそのまま出力されるとのことです。
サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 6, 20242023年初頭、Shopifyペイメントアカウント、及びShopifyアカウント全体のセキュリティを強化する為の変更が適用されました。ユーザーのアカウントセキュリティを強化す...
By Mirai Sep 29, 2024概要: 年末/年明けは、消費者が最もショッピングを行う時期の一つです。特に、ブラックフライデー・サイバーマンデー(BFCM)は、世界中で注目される大規模なセールイベントであ...
By JapanGuru Sep 25, 2024