🛍️ 商品表示中級
商品詳細ページの開閉パネル
商品詳細ページに開閉可能なアコーディオンパネルを追加するセクションブロック。タイトル、アイコン、説明文を設定でき、固定テキスト・ページコンテンツ・商品説明から内容を選べる。
用途
商品ページで「仕様」「使い方」「配送」など複数情報を整理して表示したいとき。ボタンクリックで開閉する UI でページ全体の視認性を保つ。
設置場所
snippets/product-block-collapse.liquid に配置し、sections/main-product.liquid など商品セクション内から `{% render 'product-block-collapse', block: block %}` で呼び出す。または、theme.json でセクション設定に block として登録して Theme Customizer から利用可能にする。
注意点
Bootstrap の collapse コンポーネント(`data-bs-toggle="collapse"`)に依存するため、テーマに Bootstrap JS が読み込まれていることが前提。ページコンテンツ表示の場合(`[page:xxx]`形式)、対応するページハンドルが管理画面に存在しないと空欄になる。アイコン画像のアスペクト比は `icon.aspect_ratio` で計算されるが、メタフィールドに未設定なら高さの計算が `0` 除算エラーになるため、アップロード時に画像情報が完全に記録されているか確認する。
コード
60 行 / liquid{% liquid
assign pt = block.settings.pt | prepend: 'pt-'
assign pb = block.settings.pb | prepend: 'pb-'
%}
<div
class="product-block-collapse {{ pt }} {{ pb }}"
{{ block.shopify_attributes }}>
<div
class="
collapse-wrapper
{{ block.settings.border_top_width | prepend: 'border-top-' }}
{{ block.settings.border_bottom_width | prepend: 'border-bottom-' }}
{{ block.settings.border_color }}
"
style="
border-top-style: solid;
border-bottom-style: solid;
--bs-border-opacity: {{ block.settings.border_opacity | append: '%' }};
">
<button
class="
{{ block.settings.title_font_family }}
{{ block.settings.title_font_size }}
{{ block.settings.title_text_transform }}
{{ block.settings.title_letter_spacing | prepend: 'ls-' }}
"
type="button"
data-bs-toggle="collapse"
data-bs-target="#collapse-{{ block.id }}"
aria-expanded="{% if block.settings.open_by_default %}true{% else %}false{% endif %}"
aria-controls="collapse-{{ block.id }}">
<div class="d-flex align-items-center">
{% unless block.settings.icon == blank %}
<img
class="img-fluid me-5"
src="{{ block.settings.icon | image_url: width: block.settings.icon_size }}"
alt="{{ block.settings.icon.alt }}"
width="{{ block.settings.icon_size }}"
height="{{ block.settings.icon_size | divided_by: block.settings.icon.aspect_ratio | round }}"
loading="lazy">
{% endunless %}
{{ block.settings.title }}
</div>
{% render 'svg-icons', icon: 'chevron-down', size: 18 %}
</button>
<div id="collapse-{{ block.id }}" class="collapse {% if block.settings.open_by_default %}show{% endif %}">
<div class="collapse-inner description rte mb-0 {{ block.settings.description_font_size }}">
{% if block.settings.description contains '[page' %}
{% assign page_handle = block.settings.description | split: '[page:' | last | split: ']' | first %}
{{ pages[page_handle].content }}
{% elsif block.settings.product_description %}
{{ product.description }}
{% else %}
{{ block.settings.description }}
{% endif %}
</div>
</div>
</div>
</div>出典・ライセンス
- Repository:
- https://github.com/kondasoft/ks-bootshop
- License:
- MIT
このコードは kondasoft 著作の MIT ライセンスソースです。 原本の著作権は kondasoft が保有します。日本語訳は ALSEL によるものです。
関連項目
🛍️ 商品表示上級
商品ブロック内のLiquid実行
セクションブロック内で管理画面から入力した Liquid コードを直接実行し、パディング設定で上下の余白を制御するスニペット。テーマカスタマイザーでコード記述が可能。
📁 ks-bootshop·MIT·8 行
🛍️ 商品表示初級
商品ページの見出し
商品詳細ページの商品名を h1 見出しで表示するブロック。テーマカスタマイザーから見出しサイズと上下の余白(padding)を調整できる。
📁 ks-bootshop·MIT·8 行
🛍️ 商品表示中級
商品レビューバッジの表示
Loox と JudgeMe 両方のレビュー集約アプリに対応したレーティングバッジを商品ページに埋め込む。メタフィールドから平均評価とレビュー数を取得し、各アプリの UI コンポーネントを描画する。
📁 ks-bootshop·MIT·9 行
🛍️ 商品表示中級
定期販売プランのデータ属性を動的に生成
商品の定期販売プラン(Selling Plans)をループで取得し、data 属性として HTML に埋め込むスニペット。JavaScript で定期販売オプションを制御するためのデータ基盤として機能する。
📁 theme-tools·MIT·10 行
🛍️ 商品表示初級
商品ページの区切り線
商品詳細ページで、セクション間に区切り線を挿入するブロック。パディング、高さ、背景色、透明度をカスタマイズできる。
📁 ks-bootshop·MIT·15 行
🛍️ 商品表示初級
商品画像のプリロード出力
商品オブジェクトから image_tag フィルターを使い、preload 属性付きで画像を出力するスニペット。複数商品のループ内でも使える基本的なパターン。
📁 theme-tools·MIT·16 行