Liquid、JavaScriptなどに関する質問
下記サイトを参考にして、ページに独自セクションを追加しました。
https://note.com/osamuiwasaki/n/n1c8813bab083
「Shop List1」というページで独自セクションに情報を入力しました。
次に、「Shop List2」という別のページを作成して、そのページに「Shop List1」でも利用している独自セクションが記載されているtemplateを割り当てました。
すると、「Shop List1」で入力した情報が、「Shop List2」のページにも表示されるのですが、これはSchemaの仕様なのでしょうか?
一つのセクションを汎用的に他のページにも利用したいのですが、良い方法はありますでしょうか?
解決済! ベストソリューションを見る。
成功
セクションは、各セクションごとに情報を保存し、その内容を他の場所でも出力するためのものだと思いますので、この場合セクションを増やすのが想定された方法かと思います。
この件に関しましては以下が該当するかなと思います(少々自信ありません)。
https://shopify.dev/docs/themes/sections/content-schema
The Content Schema is a formula for representing online store content. Its purpose is to standardize how themes model merchant-generated content in content sections, enabling content made with a section of one theme to be rendered by a section of a different theme. It also serves to provide a consistent editing experience to merchants.
上記を踏まえた上で「どうしても一つのセクションに作った各ブロックを出しわけたい」というのであれば以下の方法などが思い浮かびます。
※試作したわけではないので未検証です
基本的に「for文の中で任意のブロックを特定し表示させる」という動作ができればよいので、上記以外でも分岐条件さえ作れれば動作するはずです。
一応サンプルコードは書いてみましたが、こちらも未検証のためその点ご了承ください。
<ul>
{% for block in section.blocks %}
{% if block.settings.handle == page.handle %}
<li>
{% comment %} 中略 {% endcomment %}
</li>
{% endif %}
{% endfor %}
</ul>
{% schema %}
{
{% comment %} 中略 {% endcomment %}
"setting":[
{
{% comment %} 中略 {% endcomment %}
{
"id":"handle",
"type":"text",
"label":"Page Handle"
}
{% comment %} 中略 {% endcomment %}
{% endschema %}
なお、コードに関しまして最も確実なのは記事を書いた方に質問することかなと思いますので、noteの作者にご相談されることもお勧めします。
成功
セクションは、各セクションごとに情報を保存し、その内容を他の場所でも出力するためのものだと思いますので、この場合セクションを増やすのが想定された方法かと思います。
この件に関しましては以下が該当するかなと思います(少々自信ありません)。
https://shopify.dev/docs/themes/sections/content-schema
The Content Schema is a formula for representing online store content. Its purpose is to standardize how themes model merchant-generated content in content sections, enabling content made with a section of one theme to be rendered by a section of a different theme. It also serves to provide a consistent editing experience to merchants.
上記を踏まえた上で「どうしても一つのセクションに作った各ブロックを出しわけたい」というのであれば以下の方法などが思い浮かびます。
※試作したわけではないので未検証です
基本的に「for文の中で任意のブロックを特定し表示させる」という動作ができればよいので、上記以外でも分岐条件さえ作れれば動作するはずです。
一応サンプルコードは書いてみましたが、こちらも未検証のためその点ご了承ください。
<ul>
{% for block in section.blocks %}
{% if block.settings.handle == page.handle %}
<li>
{% comment %} 中略 {% endcomment %}
</li>
{% endif %}
{% endfor %}
</ul>
{% schema %}
{
{% comment %} 中略 {% endcomment %}
"setting":[
{
{% comment %} 中略 {% endcomment %}
{
"id":"handle",
"type":"text",
"label":"Page Handle"
}
{% comment %} 中略 {% endcomment %}
{% endschema %}
なお、コードに関しまして最も確実なのは記事を書いた方に質問することかなと思いますので、noteの作者にご相談されることもお勧めします。
ありがとうございます!
セクションは、各セクションごとに情報を保存し、その内容を他の場所でも出力するためのものだと思いますので、この場合セクションを増やすのが想定された方法かと思います。
理解いたしました。そういうことなのですね。Shopifyでできることとできないことというのが、だんだんと分かってきたような気がします。
ご提示いただいたアイデアですが、今回のケースではすこし無理がありそうだったので、(Shoplist1、Shoplist2...各リストに入るデータが多いので)
リストごとに対応するセクションを手動で増やす方法で対応したいと思います。
ありがとうございました!
上記の方のご説明が最適かと思いますが、補足すると、マーチャントがセクションに対して行った設定の値は、テーマ内で1箇所に保存されるのでこういった動作になります。ただし、セクションのliquid内で、例えば、{{template}} などの変数で、今どのページが表示されているかも、表示の分岐に利用すれば、使われているページによって、同一セクションでも表示を切り替えることはできると思います。後はトリッキーですが、スキーマの名称に利用されるページの名前を入れてしまうか。。
リエンゲージメントの自動化で売り上げ向上へ!素敵なオンラインストアを作成し、見込み顧客の携帯へ広告を直接に送信する、またはSNSなどで宣伝すると、お客様がストアに行き着...
By Mirai Mar 24, 2024Shopifyは世界で最も革新的なブランドと起業家をサポートしています。個人起業家やあらゆる規模のビジネスの成長を後押しするために、Shopify アカデミーではShopif...
By SarahF_Shopify Mar 22, 2024オンラインストア運営はとてもやりがいのある活動です。新しい注文が入った時の喜びや世界中のお客様とやりとりできる可能性、商品に対して最高のレビューをもらった時の満足感は、毎日の...
By Mina Mar 13, 2024