HorizonテーマのコレクションページでPC表示の列数を固定できるカスタムセクションの実装例です。テーマエディタに「グリッドモード」設定を追加し、Horizonデフォルトのカードサイズ自動調整と、1〜8列の列数固定を切り替えられます。


仕組み
Horizonのデフォルトグリッドは repeat(auto-fill, minmax(165px, 1fr)) で列数を自動決定します。ウィンドウ幅に応じて列数が増減するため、ストアのデザイン意図と合わないケースがあります。
このカスタムセクションでは「列数固定」モードを選択した場合にのみ、CSS変数 --product-grid-columns-desktop を repeat(N, 1fr) で上書きします。セクションIDで絞り込んだセレクターを使うため、他のコレクションや既存セクションには影響しません。
実装手順
1. カスタムセクションファイルを作成する
テーマファイルの sections/ フォルダに custom-main-collection-fixed-columns.liquid を新規作成します。内容はテーマ標準の main-collection.liquid をそのままコピーし、以下の2か所を追加します。
まず、</results-list> の直後に CSS変数のオーバーライドブロックを追加します。

次に、{% schema %} の settings 配列の先頭に「グリッドモード」と「PC表示の列数」の設定を追加します。

2. テンプレートJSONを作成する
テーマファイルの templates/ フォルダに collection.fixed-columns.json を新規作成します。テーマ標準の collection.json をコピーし、メインセクションの "type" を "custom-main-collection-fixed-columns" に書き換えます。

3. コレクションにテンプレートを割り当てる
Shopify管理画面の「商品」→「コレクション」から対象コレクションを開き、右サイドバーの「テーマテンプレート」から fixed-columns を選択して保存します。

割り当て後、テーマエディタを開いてコレクションページを確認し、「グリッドモード」を「列数固定」に変更、「PC表示の列数」で任意の列数を設定します。
注意事項
- 「グリッドモード:サイズ指定」の場合は従来どおりカードサイズで列数が自動決定されます
- CSS変数の上書きはPC(750px以上)のみに適用されます。モバイルの列数はテーマ標準の「モバイルカードサイズ」設定に従います
- グリッドビューのズームアウト(密表示)切替を使う場合、ズームアウト時はこの設定が無効になり自動列数に戻ります
関連TIPS: コレクションページの途中にバナー画像を表示する設定例
