FROM CACHE - jp_header

【block.settings.○○の使い方】Liquidファイル内でブロックオブジェクトを配列に格納して利用する方法

nishi-ec
Shopify Partner
27 1 2

テーマはDawnを利用しています。

初歩的なことかもしれませんが、block.settings.○○の使い方についてアドバイスいただけますと助かります。

 

実現したいこと

リキッドファイル内の下記のコードについて、 block.settings.photo01 ~ block.settings.photo08 を、配列に格納して、ifの条件式((配列(photosBlock)の中の一つを指定)の部分)に利用したいです。

{% assign photosBlock = 'block.settings.photo01,block.settings.photo02,block.settings.photo03,block.settings.photo04,block.settings.photo05,block.settings.photo06,block.settings.photo07,block.settings.photo08'|split:','%}

{% if (配列(photosBlock)の中の一つを指定) %}
  //ここに挙動を記述
{% endif %} 

試したこと

block.settings.photo01 の部分を photosBlock[0] の形式に置き換えて表示を検証してみましたが、意図通りに動作しませんでした。

※block.settings.photo03 が有効になっていない場合でも {% if photosBlock[2] %} のif内の挙動が実行されてしまいます。

{% assign photosBlock = 'block.settings.photo01,block.settings.photo02,block.settings.photo03,block.settings.photo04,block.settings.photo05,block.settings.photo06,block.settings.photo07,block.settings.photo08'|split:','%}

/*意図通りに動作する*/
{% if block.settings.photo01 %}
  console.log("photo01あるなら表示");
{% endif %} 
{% if block.settings.photo03 %}
  console.log("photo03あるなら表示");
{% endif %} 

/*意図通りに動作しない*/
{% if photosBlock[0] %}
  console.log("photo01あるなら表示");
{% endif %} 
{% if photosBlock[2] %}
  console.log("photo03あるなら表示");
{% endif %} 

もしお気づきの点があればアドバイスいただけますと幸いです。

よろしくお願いいたします。

1件の返信1
株式会社フルバランス
Shopify Partner
1023 351 514

Nishi-Ec 様

 

お世話になっております。

推測ですが、photosBlock配列に入れることで、block.settings.photo01などが変数でなく文字列になっている可能はないでしょうか。

 

例えば以下のコードだと、sweets配列内は全て文字列で出力されるかと思います。

{% assign sweets = 'cake, icecream, crepe, applepie, tart' | split: ', ' %}

{% for item in sweets %}
  <p>sweets:{{ item }}</p><br>
{% endfor %}

 なにかヒントになれば幸いです。

株式会社フルバランス(Shopify Experts)
Shopify専門のEC成長支援会社です。ECの技術・実務・成長、お悩みのことがあれば、気軽にご相談ください。
『すべてのブランドの特大成長エンジンを搭載する』 株式会社フルバランス