Liquid、JavaScriptなどに関する質問
無料テーマのSenseで、公式アプリの「Search & Discovery」を利用し、おすすめ商品を自動生成で表示させています。
有料オプション用に登録してある「ラッピング」などの商品を、おすすめ商品の欄に表示させないようにしたく、非表示にしたい商品に「非表示」のタグをつけ、related-products.liquidの38行目&48行目に下記のコードを追加しました。
{% unless recommendation.tags contains "非表示" %}
・
{% endunless %}
おすすめ欄に表示されないようにはできたのですが、おすすめ商品を4つ表示するように設定してあるのが、3つしか表示されません。
非表示の商品の分が抜けてそうなっていると思うのですが、設定した個数を表示するにはどうしたらよいでしょうか。
related-products.liquidのコード全文は以下の通りです。
<link rel="stylesheet" href="{{ 'component-card.css' | asset_url }}" media="print" onload="this.media='all'">
<link rel="stylesheet" href="{{ 'component-price.css' | asset_url }}" media="print" onload="this.media='all'">
<link
rel="stylesheet"
href="{{ 'section-related-products.css' | asset_url }}"
media="print"
onload="this.media='all'"
>
{%- style -%}
.section-{{ section.id }}-padding {
padding-top: {{ section.settings.padding_top | times: 0.75 | round: 0 }}px;
padding-bottom: {{ section.settings.padding_bottom | times: 0.75 | round: 0 }}px;
}
@media screen and (min-width: 750px) {
.section-{{ section.id }}-padding {
padding-top: {{ section.settings.padding_top }}px;
padding-bottom: {{ section.settings.padding_bottom }}px;
}
}
{%- endstyle -%}
<div class="color-{{ section.settings.color_scheme }} gradient no-js-hidden">
<product-recommendations
class="related-products page-width section-{{ section.id }}-padding isolate"
data-url="{{ routes.product_recommendations_url }}?section_id={{ section.id }}&product_id={{ product.id }}&limit={{ section.settings.products_to_show }}"
>
{% if recommendations.performed and recommendations.products_count > 0 %}
<h2 class="related-products__heading {{ section.settings.heading_size }}">
{{ section.settings.heading | escape }}
</h2>
<ul
class="grid product-grid grid--{{ section.settings.columns_desktop }}-col-desktop grid--{{ section.settings.columns_mobile }}-col-tablet-down"
role="list"
>
{% for recommendation in recommendations.products %}
{% unless recommendation.tags contains "非表示" %}
<li class="grid__item">
{% render 'card-product',
card_product: recommendation,
media_aspect_ratio: section.settings.image_ratio,
show_secondary_image: section.settings.show_secondary_image,
show_vendor: section.settings.show_vendor,
show_rating: section.settings.show_rating
%}
</li>
{% endunless %}
{% endfor %}
</ul>
{% endif %}
</product-recommendations>
</div>
{% schema %}
{
"name": "t:sections.related-products.name",
"tag": "section",
"class": "section",
"settings": [
{
"type": "paragraph",
"content": "t:sections.related-products.settings.paragraph__1.content"
},
{
"type": "text",
"id": "heading",
"default": "You may also like",
"label": "t:sections.related-products.settings.heading.label"
},
{
"type": "select",
"id": "heading_size",
"options": [
{
"value": "h2",
"label": "t:sections.all.heading_size.options__1.label"
},
{
"value": "h1",
"label": "t:sections.all.heading_size.options__2.label"
},
{
"value": "h0",
"label": "t:sections.all.heading_size.options__3.label"
}
],
"default": "h1",
"label": "t:sections.all.heading_size.label"
},
{
"type": "range",
"id": "products_to_show",
"min": 2,
"max": 10,
"step": 1,
"default": 4,
"label": "t:sections.related-products.settings.products_to_show.label"
},
{
"type": "range",
"id": "columns_desktop",
"min": 1,
"max": 5,
"step": 1,
"default": 4,
"label": "t:sections.related-products.settings.columns_desktop.label"
},
{
"type": "select",
"id": "color_scheme",
"options": [
{
"value": "accent-1",
"label": "t:sections.all.colors.accent_1.label"
},
{
"value": "accent-2",
"label": "t:sections.all.colors.accent_2.label"
},
{
"value": "background-1",
"label": "t:sections.all.colors.background_1.label"
},
{
"value": "background-2",
"label": "t:sections.all.colors.background_2.label"
},
{
"value": "inverse",
"label": "t:sections.all.colors.inverse.label"
}
],
"default": "background-1",
"label": "t:sections.all.colors.label",
"info": "t:sections.all.colors.has_cards_info"
},
{
"type": "header",
"content": "t:sections.related-products.settings.header__2.content"
},
{
"type": "select",
"id": "image_ratio",
"options": [
{
"value": "adapt",
"label": "t:sections.related-products.settings.image_ratio.options__1.label"
},
{
"value": "portrait",
"label": "t:sections.related-products.settings.image_ratio.options__2.label"
},
{
"value": "square",
"label": "t:sections.related-products.settings.image_ratio.options__3.label"
}
],
"default": "adapt",
"label": "t:sections.related-products.settings.image_ratio.label"
},
{
"type": "checkbox",
"id": "show_secondary_image",
"default": false,
"label": "t:sections.related-products.settings.show_secondary_image.label"
},
{
"type": "checkbox",
"id": "show_vendor",
"default": false,
"label": "t:sections.related-products.settings.show_vendor.label"
},
{
"type": "checkbox",
"id": "show_rating",
"default": false,
"label": "t:sections.related-products.settings.show_rating.label",
"info": "t:sections.related-products.settings.show_rating.info"
},
{
"type": "header",
"content": "t:sections.related-products.settings.header_mobile.content"
},
{
"type": "select",
"id": "columns_mobile",
"default": "2",
"label": "t:sections.related-products.settings.columns_mobile.label",
"options": [
{
"value": "1",
"label": "t:sections.related-products.settings.columns_mobile.options__1.label"
},
{
"value": "2",
"label": "t:sections.related-products.settings.columns_mobile.options__2.label"
}
]
},
{
"type": "header",
"content": "t:sections.all.padding.section_padding_heading"
},
{
"type": "range",
"id": "padding_top",
"min": 0,
"max": 100,
"step": 4,
"unit": "px",
"label": "t:sections.all.padding.padding_top",
"default": 36
},
{
"type": "range",
"id": "padding_bottom",
"min": 0,
"max": 100,
"step": 4,
"unit": "px",
"label": "t:sections.all.padding.padding_bottom",
"default": 36
}
]
}
{% endschema %}
解決済! ベストソリューションを見る。
成功
表示数を1つ増やして5にし、最終的に4つ表示する形にすればよいかなと思います。
試作していませんが以下のような方法が考えられます。
[参考]
https://shopify.dev/docs/api/liquid/tags/iteration-tags
https://shopify.dev/docs/api/liquid/tags/break
https://webutubutu.com/webdesign/9748
※上記は私のブログ記事ですが、こちらのサンプル1のコード内にあるloopnum1やloopnum2がループ回数計測の一例に該当します
こちらも試作していませんが、候補10件を手動設定する方法でよいならば以下ページ内のShopifyスタッフの回答でも対応できると思います。
以上ですが、記載した方法では対応できない場合は申し訳ありません。
他方、liquidの読み書きが難しい場合はエキスパートやパートナーに依頼されることをお勧めします。
成功
表示数を1つ増やして5にし、最終的に4つ表示する形にすればよいかなと思います。
試作していませんが以下のような方法が考えられます。
[参考]
https://shopify.dev/docs/api/liquid/tags/iteration-tags
https://shopify.dev/docs/api/liquid/tags/break
https://webutubutu.com/webdesign/9748
※上記は私のブログ記事ですが、こちらのサンプル1のコード内にあるloopnum1やloopnum2がループ回数計測の一例に該当します
こちらも試作していませんが、候補10件を手動設定する方法でよいならば以下ページ内のShopifyスタッフの回答でも対応できると思います。
以上ですが、記載した方法では対応できない場合は申し訳ありません。
他方、liquidの読み書きが難しい場合はエキスパートやパートナーに依頼されることをお勧めします。
Jizo_Inagaki様
ご返信ありがとうございます。
除外用タグがないループの回数を計測し、ループ回数が設定した表示数になった時点でbreakを実行する方法で実現できました。
商品数が多いこともあり、できれば手動設定を避けたかったため大変助かりました。
たくさんのヒントをご提示くださりありがとうございました。
サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 6, 20242023年初頭、Shopifyペイメントアカウント、及びShopifyアカウント全体のセキュリティを強化する為の変更が適用されました。ユーザーのアカウントセキュリティを強化す...
By Mirai Sep 29, 2024概要: 年末/年明けは、消費者が最もショッピングを行う時期の一つです。特に、ブラックフライデー・サイバーマンデー(BFCM)は、世界中で注目される大規模なセールイベントであ...
By JapanGuru Sep 25, 2024