Liquid、JavaScriptなどに関する質問
テーマはDawnを使用しています。
sectionsフォルダの「main-product.liquid」にて、snippetsフォルダのファイル「buy-buttons.liquid」が下記の通り読み込まれています。
{%- render 'buy-buttons', block: block, product: product, product_form_id: product_form_id, section_id: section.id, show_pickup_availability: true -%}
また、「main-product.liquid」には下記のブロックを追加してあります。
{ "type": "custom-checkbox", "name": "チェックボックス", "limit": 1, "settings": [ { "type": "checkbox", "id": "show_custom-checkbox", "default": true, "label": "チェックボックスエリアを表示する", "info": "info" }, { "type": "checkbox", "id": "show_custom-checkbox02", "default": true, "label": "ラベル", "info": "info" } ] }
上記のブロックが存在する時だけ、「buy-buttons.liquid」内で表示したい内容があるのですが、
「buy-buttons.liquid」内で以下のように記述しても、「チェックボックスのブロックが存在しなければ実行」が表示されてしまいます。(「チェックボックスのブロックが存在したら実行」が表示されてほしい。)
{%- if block.settings.show_custom-checkbox != blank -%} チェックボックスのブロックが存在したら実行 {%- else -%} チェックボックスのブロックが存在しなければ実行 {%- endif -%}
ifの表記を下記に変更しても同じ結果でした。
{%- if block.settings['show_custom-checkbox'] != blank -%}
もしお気づきの点がありましたらアドバイスいただけますと幸いです。
よろしくお願いいたします。
追記:ifの表記を下記に変更しても同じ結果でした。
{%- if block.settings.show_custom-checkbox -%}
解決済! ベストソリューションを見る。
成功
動作確認をしていないため、うまく機能しないかもしれませんが、
ご参考までに回答いたします。
> また、「main-product.liquid」には下記のブロックを追加してあります。
こちらは、main-product.liquidの下記の「たくさんのblockの記述」の1つとして追加された、ということですね。
{% schema %}
{
"name": "t:sections.main-product.name",
"tag": "section",
"class": "section",
"blocks": [
// たくさんのblockの記述
]
buy-buttons.liquid内のblockに渡されているのは、
section.blocks['buy-buttons']だけなので、
section.blocks['custom-checkbox']を明示的に、
buy-buttons.liquidに渡してあげる必要がありそうです。
まず、
{%- render 'buy-buttons', block: block, product: product, product_form_id: product_form_id, section_id: section.id, show_pickup_availability: true -%}
こちらの記述を、下記のように変更します。
{%- assign custom_checkbox_block = '' -%}
{%- for block in section.blocks -%}
{%- case block.type -%}
{% when "custom-checkbox" %}
{%- assign custom_checkbox_block = block -%}
{%- endcase -%}
{%- endfor -%}
{%- render 'buy-buttons', block: block, product: product, product_form_id: product_form_id, section_id: section.id, show_pickup_availability: true, custom_checkbox_block: custom_checkbox_block -%}
こうすることで、
buy-buttons.liquidの中で、
custom_checkbox_block.settings.show_custom-checkbox
のようにすれば値を参照できるはずです。
custom-checkboxの値を渡すためにfor文とcaseで無理やり変数に格納している部分が、もっとスマートな方法がありそうですが、取り急ぎ考え方だけでも参考になればと思います。
ご参考まで。
(キュー田辺)
成功
動作確認をしていないため、うまく機能しないかもしれませんが、
ご参考までに回答いたします。
> また、「main-product.liquid」には下記のブロックを追加してあります。
こちらは、main-product.liquidの下記の「たくさんのblockの記述」の1つとして追加された、ということですね。
{% schema %}
{
"name": "t:sections.main-product.name",
"tag": "section",
"class": "section",
"blocks": [
// たくさんのblockの記述
]
buy-buttons.liquid内のblockに渡されているのは、
section.blocks['buy-buttons']だけなので、
section.blocks['custom-checkbox']を明示的に、
buy-buttons.liquidに渡してあげる必要がありそうです。
まず、
{%- render 'buy-buttons', block: block, product: product, product_form_id: product_form_id, section_id: section.id, show_pickup_availability: true -%}
こちらの記述を、下記のように変更します。
{%- assign custom_checkbox_block = '' -%}
{%- for block in section.blocks -%}
{%- case block.type -%}
{% when "custom-checkbox" %}
{%- assign custom_checkbox_block = block -%}
{%- endcase -%}
{%- endfor -%}
{%- render 'buy-buttons', block: block, product: product, product_form_id: product_form_id, section_id: section.id, show_pickup_availability: true, custom_checkbox_block: custom_checkbox_block -%}
こうすることで、
buy-buttons.liquidの中で、
custom_checkbox_block.settings.show_custom-checkbox
のようにすれば値を参照できるはずです。
custom-checkboxの値を渡すためにfor文とcaseで無理やり変数に格納している部分が、もっとスマートな方法がありそうですが、取り急ぎ考え方だけでも参考になればと思います。
ご参考まで。
(キュー田辺)
ご教示頂いた内容で正常に動作し、解決しました。
ありがとうございます。
いつも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