コレクション一覧ページで表示されるコレクションの一部をコレクション一覧ページで非表示にしたい

Topic summary

課題: 複数ブランドのためにコレクション機能を利用しているが、RANKINGなどブランド以外のコレクションも一覧ページに表示されてしまうため非表示にしたい。使用テーマはDebut/Dawn。

提案された方法: Dawn前提で管理画面から新規テンプレート「collection.show.json」を作成し、既存のcollection.jsonをコピー。main-list-collections.liquidのcollections参照前に「assign collections = collections | where: ‘template_suffix’, ‘show’」を追記し、表示したいコレクションにテンプレート「show」を設定。デフォルトのみを使う運用なら、逆に「assign collections = collections | where: ‘template_suffix’, ‘’」でテンプレート未指定のものだけ表示する。Debutでも概ね同様に可能と示唆。

技術的ポイント: Liquidのwhereフィルターとtemplate_suffixで一覧表示対象を絞る。コードの追記が核心。

注意点: 複数テンプレート運用となるため、テーマのカスタマイズはデフォルトとshow両方へ反映が必要。

現状・今後: 質問者は内容を理解し試す予定。運用面の課題を認識。最終解決は未確定で、他の方法の提案も期待。

Summarized with AI on February 23. AI used: gpt-5.

現在サイトを構築中なのですが、サイトには複数のブランドがありコレクション機能を利用しております。

ブランド以外もコレクション機能を利用(RANKINGなど)しており、コレクションの一覧ページに遷移するとRANKINGなども表示されてしまいます。

コレクション一覧ページにRANKINGなどを非表示にさせたいのですが何か解決策はありますでしょうか。

現状はDebutとDawnで作業を進めております。

いくつか考えられますが、多少弊害もあるものの試したらできました方法を以下記載します。

Dawnテーマを使用し、管理画面内での操作を前提とします。

試していませんがDebutでも概ね同様にできるかと思います。

  1. 「コードを編集」で編集画面に移動
  2. 「新しいtemplateを追加する」で「テンプレートタイプ」は「JSON」を選び、「新しいテンプレートを作成する」は「collection」を選び、「ファイル名」は「show」と入力
  3. collection.jsonの内容をそのまま新規作成したcollection.show.jsonにコピーして保存
  4. main-list-collections.liquidの7行目あたり(collectionsオブジェクトが登場するより前の位置)に行を追加し後述するコードを記述
  5. コレクション一覧ページで表示させたいコレクションの全てで、「テーマテンプレート」に「show」を選ぶ

記述するコードは以下の通りです。

assign collections = collections | where: 'template_suffix', 'show'

上記で「テンプレートにshowが選ばれているcollectionのみ」のオブジェクトを作ることがで、必要なコレクションだけが表示されるはずです。

基本的にデフォルトのテンプレートのみを使用している場合には、逆に表示したくないcollectionにだけテンプレートを適用して以下のように記述することでも対応可能でした。

assign collections = collections | where: 'template_suffix', ''

上記で「テンプレートに何も選ばれていないcollectionのみ」となります。

他にもあるかもしれませんが、考えられる問題点は以下の通りです。

  • テーマのカスタマイズでなんらかの編集を行う場合、デフォルトのテンプレートと同様の編集をshowテンプレートでも行わなければならない

以上ですが他にもっと良い方法があるとは思いますので、他の方の回答を待たれることもお勧めします。

回答ありがとうございます。

内容についても理解できました。

一度試してみたいと思います。

運用面で弊害もありそうですね。

1 Like