Shopifyの「recommendations」は、顧客の行動や商品データに基づいて関連商品を自動表示するLiquidオブジェクトです。手動で商品の指定はできませんが、条件分岐などを活用することで表示内容を柔軟に調整できます。導線設計にも有効です。
Shopifyのテーマには、デフォルトで「related-products.liquid」というテンプレートが組み込まれており、このテンプレートは主に「関連商品リスト」を表示するために使われています。
テンプレート名からもその目的が明確ですが、実際に関連商品を表示するためには、特定のLiquidオブジェクトを使用されております。
その中でも重要な役割を果たしているのが「recommendations」というオブジェクトです。
このオブジェクトは、Shopifyストアの顧客の購入履歴や閲覧履歴をもとに、関連する商品を動的に選び出して表示する機能を担っています。
この記事では、この「recommendations」について、その仕組みや活用方法を詳しく解説していきます。
「recommendations」とは
「recommendations」とは、特定の商品に関連するおすすめ商品(レコメンデーション)を返すLiquidオブジェクトです。
このオブジェクトは、顧客の行動やストア内でのさまざまなデータを基に、自動的に関連商品を選出します。
具体的には、販売データや商品説明、商品とコレクションの関係などをもとに、おすすめの商品が表示されます。
また、注目すべきポイントは、新しい注文や商品データが増えるたびに、レコメンデーションの精度が向上していくことです。これにより、より関連性の高い商品が表示され、顧客の購買意欲を刺激する効果が期待できます。
「recommendations」のプロパティ
「recommendations」オブジェクトには、いくつかの便利なプロパティがあります。以下はその一部です:
・recommendations.products:レコメンデーション商品
・recommendations.performed: 推薦が実行されたかどうかを示すプロパティです。true または false の値が返され、レコメンデーションが正常に処理されたかどうかを確認することができます。
・recommendations.products_count: 推薦された商品の数を示すプロパティです。この値を使って、レコメンデーションが表示する商品数を把握することができます。
・recommendations.products: 推薦された商品の配列です。これが実際に表示される商品のリストを保持しており、Liquid内でループを使って各商品の情報を取り出し、表示することができます。
「recommendations」でリスト(ループ)を作る
では、基本的な使い方の一つ、ループ作成のサンプルコードを見てみましょう。
{% if recommendations.products_count > 0 %} //レコメンドできる商品の数が1個以上なら
<ul>
{% for recommended_product in recommendations.products %}
<li>{{ recommended_product.title }}</li>
{% endfor %}
</ul>
{% endif %}
「recommendations」を制御する事はできる?
では、「recommendations」の内容をショップ側で制御することは可能なのでしょうか?
結論から言えば、「recommendations.products」で選ばれる商品自体を手動で指定することはできません。
上述したように、このオブジェクトはShopify側が自動的に関連性の高い商品を選出する仕組みであり、その判断には顧客の行動履歴、販売実績、商品説明、コレクション構造など、さまざまな内部データが用いられます。そのため、ショップオーナーが「この商品をレコメンドに出したい」と思っても、直接的に制御する手段は基本的には提供されていません。
とはいえ、Liquidの条件分岐を用いることで、表示する商品の「範囲」や「見せ方」をある程度コントロールすることは可能です。
たとえば、あるタグを持つ商品のみを表示する、あるいは特定の商品タイプを除外する、といったフィルタリング処理を加えることで、レコメンド表示の質を高めたり、意図に沿ったカスタマイズを施すことができます。
条件分岐サンプルコード
では、条件分岐で「範囲」や「見せ方」を制御するサンプルコードを見てみましょう。
{% assign current_group = product.metafields.custom.recommend_group.value %}
{% for recommended in recommendations.products %}
{% if recommended.metafields.custom.recommend_group.value == current_group %}
<li>{{ recommended.title }}</li>
{% endif %}
{% endfor %}
簡単に解説すると、
①現在表示中の商品のメタフィールド(custom.recommend_group
)の値を変数(current_group
)に格納
②「for文」でレコメンド商品のループを作成
③個々のレコメンド商品のメタフィールド(custom.recommend_group
)を参照し、その値がcurrent_group
と一致すれば、そのレコメンド商品のタイトルだけを抽出し表示
になります。
以上、Liquidオブジェクト「recommendations」について解説いたしました。
「recommendations.products」は完全にコントロールできませんが、表示条件を工夫することでストアの導線設計に役立てることができます。
自動生成の利点を活かしつつ、Liquidで柔軟に調整するのが現実的な活用法といえると思います。