🔍 コレクション/検索中級
サイドバー検索モーダル
画面右側からスライドインする検索パネル。商品・コレクション・ブログ記事・ページを対象とした予測検索(オートコンプリート)に対応し、管理画面の設定で検索対象を切り替えられる。
用途
ストアのヘッダーに検索ボタンを配置し、クリックで右側からこのモーダルを展開。ユーザーが入力開始と同時に関連商品やページが候補として出現する検索体験を実装する。
設置場所
snippets/offcanvas-search.liquid に配置し、theme.liquid のヘッダー内、または header セクションから `{% render 'offcanvas-search' %}` で呼び出す。管理画面の「テーマ設定」で search_collections、search_articles、search_pages の有効化を確認しておく。
注意点
予測検索はカスタム JavaScript(predictive-search コンポーネント)に依存するため、別途 assets 内にそのスクリプトが必須。管理画面で「検索を有効にする」がオンになっていないと検索結果が表示されないため、Settings > Searchboard を確認する。RTL 言語対応の判定に `request.locale.iso_code` を使っているので、多言語ストアの場合は言語コード値を検証しておく。
コード
72 行 / liquid{% liquid
assign resources_type = 'query,product'
if settings.search_collections
assign resources_type = resources_type | append: ',collection'
endif
if settings.search_articles
assign resources_type = resources_type | append: ',article'
endif
if settings.search_pages
assign resources_type = resources_type | append: ',page'
endif
%}
<div
id="offcanvas-search"
class="offcanvas-search offcanvas offcanvas-end"
tabindex="-1"
aria-labelledby="offcanvas-search-label">
<predictive-search
class="predictive-search"
data-img-orientation="{{ settings.product_img_orientation }}"
data-img-border="{{ settings.product_img_border }}"
data-show-quick-view="{{ settings.search_show_quick_view }}"
data-quick-view-btn-color="{{ settings.search_quick_view_btn_color }}"
data-resources-type="{{ resources_type }}">
<div class="offcanvas-header">
<h2 id="offcanvas-search-label" class="offcanvas-title">
{{ 'general.search.title' | t }}
</h2>
<button class="btn-close" type="button" data-bs-dismiss="offcanvas" aria-label="{{ 'general.accessibility.close' | t }}">
{% render 'svg-icons', icon: 'x' %}
</button>
</div>
<div class="offcanvas-body">
<form action="{{ routes.search_url }}" class="search-form mb-6" method="get" role="search">
<input name="options[prefix]" type="hidden" value="last">
<div class="form-control-wrapper">
<input
class="form-control"
type="search"
name="q"
value="{{ search.terms | escape }}"
role="combobox"
aria-expanded="false"
aria-owns="predictive-search-results"
aria-controls="predictive-search-results"
aria-haspopup="listbox"
aria-autocomplete="list"
aria-label="{{ 'general.search.input_label' | t }}"
placeholder="{{ 'general.search.input_label' | t }}"
autocorrect="off"
autocomplete="off"
autocapitalize="off"
spellcheck="false">
<button type="submit" class="btn btn-link" aria-label="{{ 'general.search.btn_label' | t }}">
{% render 'svg-icons', icon: 'search', size: 20, class: '' %}
</button>
</div>
<div id="predictive-search" tabindex="-1"></div>
<span id="predictive-search-status" class="visually-hidden" role="status"></span>
</form>
<div class="search-empty pt-4 pb-11 text-center" {% if settings.rtl_langs contains request.locale.iso_code %}hidden{% endif %}>
{{ 'general.search.empty_html' | t }}
<button class="btn btn-outline-primary" type="button" data-bs-dismiss="offcanvas">
{{ 'general.search.continue_shopping' | t }}
</button>
</div>
</div>
</predictive-search>
</div>
出典・ライセンス
- Repository:
- https://github.com/kondasoft/ks-bootshop
- License:
- MIT
このコードは kondasoft 著作の MIT ライセンスソースです。 原本の著作権は kondasoft が保有します。日本語訳は ALSEL によるものです。
関連項目
🔍 コレクション/検索初級
ページネーションの表示
ページネーションUI(前へ・次へ、ページ番号)を paginate オブジェクトから描画するスニペット。デフォルトのページネーション形式で複数ページに分割したコンテンツをナビゲートできる。
📁 shopify-code-snippets·MIT·6 行
🔍 コレクション/検索初級
ページネーションの現在位置表示
コレクションや検索結果の一覧ページで、現在のページ番号と全ページ数を表示する。Shopify の多言語対応翻訳キーを使用して、言語ごとに自動で表記を切り替える。
📁 shopify-code-snippets·MIT·6 行
🔍 コレクション/検索中級
検索結果のペジネーション比較
検索結果を paginate タグで複数パターン分割して表示するテンプレート。デフォルトペジネーションと window_size:1 オプション指定の両方の書き方を示しており、ページネーション動作の違いを検証するサンプルコード。
📁 theme-tools·MIT·12 行
🔍 コレクション/検索初級
検索結果のページネーション設定
検索結果を paginate タグでページ分割し、複数の window_size 設定を並べて出力する方法。28件単位のペーグネーションと、ウィンドウサイズを明示的に指定した設定の2パターンを示している。
📁 theme-tools·MIT·12 行
🔍 コレクション/検索初級
コレクションページの商品ギャラリー
コレクション内の商品を3列のテーブルレイアウトで表示するテンプレート。各商品にサムネイル、タイトル、価格(セール時は定価を取消線)を表示し、ページネーションに対応する。
📁 liquid·MIT·20 行
🔍 コレクション/検索初級
コレクションページの商品一覧
コレクション内の商品を一覧表示し、商品画像・タイトル・説明文・価格帯をカード状に並べる。ページネーション機能で20件ごとに分割表示する。
📁 liquid·MIT·23 行