Commerce Wishlist
Drupal Commerce向けのウィッシュリスト機能を提供し、顧客がカート以外のリストに商品を保存できるようにします。
commerce_wishlist
概要
Commerce Wishlistは、Drupal Commerceサイトに完全なウィッシュリスト機能を追加するモジュールです。顧客は興味のある商品をウィッシュリストに保存し、後でカートに追加したり、他のユーザーと共有したりできます。
このモジュールはCommerce Orderと類似したアーキテクチャを持ち、専用のWishlistエンティティとWishlistItemエンティティを提供します。これにより、ウィッシュリストに対してカスタムフィールドを追加したり、独自のバンドル(タイプ)を作成したりすることが可能です。
主な特徴として、商品ページへの「ウィッシュリストに追加」ボタンの自動表示、ウィッシュリストからカートへの商品移動、メールによるウィッシュリスト共有、匿名ユーザーのサポート(ログイン時にウィッシュリストを自動的にアカウントに紐付け)などがあります。管理者はウィッシュリストタイプの作成、複数ウィッシュリストの許可設定、匿名共有の設定などを行えます。
Features
- 商品を「ウィッシュリストに追加」ボタンでリストに保存(カート追加フォームに自動統合)
- ウィッシュリストからカートへ商品を移動またはコピー
- カートからウィッシュリストへ商品を移動またはコピー
- メールによるウィッシュリスト共有機能
- 匿名ユーザーのウィッシュリストサポート(セッションベース)
- ログイン時に匿名ウィッシュリストを自動的にアカウントに紐付け
- 複数ウィッシュリストの作成(設定で有効化可能)
- ウィッシュリストアイテムへのコメントと数量の設定
- ウィッシュリストブロックによるヘッダー表示
- 購入履歴の追跡(どの注文でいつ購入されたか)
- ウィッシュリストタイプによるカスタマイズ
- Views統合による柔軟な表示カスタマイズ
Use Cases
基本的なウィッシュリスト機能の提供
ECサイトの顧客が興味のある商品を「後で買う」リストとして保存できるようになります。商品ページの「カートに追加」ボタンの近くに「ウィッシュリストに追加」ボタンが表示され、クリックするとその商品がウィッシュリストに追加されます。ヘッダーにウィッシュリストブロックを配置することで、顧客はいつでもウィッシュリストにアクセスできます。
ウィッシュリストの共有(ギフトレジストリ)
顧客は自分のウィッシュリストをメールで家族や友人に共有できます。共有されたウィッシュリストは公開URLでアクセス可能となり、受け取った人はそのリストから商品をカートに追加して購入できます。結婚式や誕生日のギフトレジストリとして活用できます。
カートとウィッシュリスト間の商品移動
顧客はカートビューで「ウィッシュリストに移動」ボタンを使用して、まだ購入しない商品をウィッシュリストに保存できます。逆に、ウィッシュリストから「カートに追加」ボタンで購入準備ができた商品をカートに移動できます。これにより、購入の意思決定を柔軟に行えます。
匿名ユーザーのウィッシュリスト
ウィッシュリストタイプで「匿名ウィッシュリストを許可」を有効にすると、ログインしていないユーザーもウィッシュリストを使用できます。セッションベースでウィッシュリストが管理され、ユーザーがログインまたは登録すると、そのウィッシュリストが自動的にアカウントに紐付けられます。
複数ウィッシュリストの管理
設定で「複数ウィッシュリストを許可」を有効にすると、顧客は目的別に複数のウィッシュリストを作成できます(例:「誕生日プレゼント」「クリスマス」「いつか買いたいもの」など)。ウィッシュリストにはカスタム名を付けられ、デフォルトウィッシュリストを設定できます。
購入履歴の追跡
ウィッシュリストアイテムには購入履歴が記録されます。どの注文でいつ購入されたかを追跡でき、「購入済みアイテムをリストに保持」オプションにより、購入後もアイテムをウィッシュリストに残すかどうかを選択できます。リピート購入や在庫補充リストとして活用できます。
Tips
- ウィッシュリストブロックをテーマのヘッダー領域に配置して、顧客がいつでもウィッシュリストにアクセスできるようにしましょう。
- commerce_wishlist_item_tableビューをカスタマイズして、ウィッシュリストアイテムの表示をサイトのデザインに合わせましょう。
- WishlistTypeを複数作成して、目的別のウィッシュリスト(ギフトレジストリ、お気に入りなど)を提供できます。
- WISHLIST_ENTITY_ADDイベントをサブスクライブして、追加時のメッセージをカスタマイズしたり、追加の処理を実行できます。
- Viewsを使用して、商品ページにその商品がウィッシュリストに入っているかどうかを表示するカスタマイズが可能です。
- テンプレートファイルをテーマにコピーしてオーバーライドすることで、ウィッシュリストの表示を完全にカスタマイズできます。
Technical Details
Admin Pages 4
/admin/commerce/config/wishlist-settings
ウィッシュリストの全般的な動作を設定します。複数ウィッシュリストの許可、匿名共有の設定、デフォルトウィッシュリストタイプ、各購入可能エンティティのビューモードを設定できます。
/admin/commerce/config/wishlist-types
ウィッシュリストタイプを管理します。タイプごとに匿名ウィッシュリストの許可設定やフィールドをカスタマイズできます。
/admin/commerce/config/wishlist-types/{commerce_wishlist_type}/edit
ウィッシュリストタイプを編集します。
/admin/commerce/wishlists
サイト上のすべてのウィッシュリストを一覧表示し、管理します。名前、作成日時、タイプ、所有者でフィルタリングできます。
権限 7
Hooks 8
hook_user_login
ユーザーログイン時に匿名ウィッシュリストをログインユーザーに割り当てます。
hook_commerce_wishlist_delete
ウィッシュリスト削除時にセッションからウィッシュリストIDを削除します。
hook_theme
ウィッシュリスト関連のテーマフックを定義します。
hook_field_formatter_third_party_settings_form
カート追加フォーマッターにウィッシュリストボタン表示設定を追加します。
hook_form_commerce_order_item_add_to_cart_form_alter
カート追加フォームに「ウィッシュリストに追加」ボタンを追加します。
hook_entity_bundle_info
購入可能エンティティタイプに基づいてウィッシュリストアイテムのバンドルを動的に定義します。
hook_entity_delete
購入可能エンティティ削除時に関連するウィッシュリストアイテムをキューに追加して削除します。
hook_views_data_alter
オーダーアイテムのViewsデータに「ウィッシュリストへ移動」フィールドを追加します。
Troubleshooting 5
1. 商品表示の「バリエーション」フィールドのフォーマッター設定で「ウィッシュリストボタンを表示」が有効になっていることを確認してください。2. ユーザーに「access wishlist」権限が付与されていることを確認してください。3. デフォルトウィッシュリストタイプが設定で選択されていることを確認してください。
1. 管理 > Commerce > 設定 > Wishlists > Wishlist types で、使用するウィッシュリストタイプの「Allow anonymous wishlists」を有効にしてください。2. 匿名ユーザーに「access wishlist」権限が付与されていることを確認してください。
設定で「複数ウィッシュリストを許可」が無効の場合、ログイン時に匿名ウィッシュリストは既存のウィッシュリストにマージされます。アイテムは失われていません。既存のウィッシュリストを確認してください。
1. 商品バリエーションが公開されていることを確認してください(無効な商品は移動ボタンが表示されません)。2. 商品が現在のストアで購入可能であることを確認してください。
1. サイトのメール設定が正しく構成されていることを確認してください。2. 匿名ユーザーの場合、設定で「匿名共有を許可」が有効になっていることを確認してください。3. メールログモジュールを使用してメール送信の詳細を確認してください。
Security Notes 3
- ウィッシュリストの公開URLはランダムなコードで生成されますが、推測可能性を完全に排除するものではありません。機密性の高いウィッシュリストにはパスワード保護などの追加対策を検討してください。
- 「administer commerce_wishlist_type」権限は制限付きアクセスとしてマークされています。信頼できる管理者にのみ付与してください。
- 匿名共有機能を有効にする際は、匿名ウィッシュリストが重複される設定を理解した上で使用してください。