Commerce Bulk
商品バリエーション、属性値、タクソノミータームなどのDrupal Commerceエンティティの一括作成サービスと一括操作機能を提供します。
commerce_bulk
概要
Commerce Bulkは、ストア管理者が一括操作を通じて大量の商品バリエーション、属性値、タクソノミータームを効率的に管理できるようにする強力なDrupal Commerceモジュールです。このモジュールは、選択したエンティティに対して、面倒な1件ずつの編集なしにバッチ処理で変更を行えるVBO(Views Bulk Operations)アクションの包括的なセットを提供します。
モジュールの中核には、設定された属性に基づいてすべての可能な商品バリエーションの組み合わせをプログラムで生成するBulkVariationsCreatorサービスが含まれています。このサービスは、複数の属性(サイズ、色、素材など)を持つ商品を扱うストアで特に有用であり、各組み合わせを手動で作成することが現実的でない場合に役立ちます。
また、このモジュールはSKUフィールドを拡張し、設定可能なプレフィックス、サフィックス、エントロピー設定による自動一意SKU生成をサポートするカスタムウィジェットを提供します。さらに、GDPRコンプライアンスやデータ保護要件に役立つ注文匿名化機能も提供しています。
Features
- 属性の組み合わせに基づくすべての可能な商品バリエーションの一括作成
- 設定可能なプレフィックス、サフィックス、エントロピー設定を使用したPHPのuniqid()関数による自動SKU生成
- バリエーション一括アクション:複製、削除、価格設定、価格調整、SKU変更、ステータス変更、タイトル変更、先頭へ移動
- 属性値一括アクション:名前の変更または追加、先頭へ移動、属性値の削除
- タクソノミーターム一括アクション:タームの複製/並び替え/名前変更、タームの削除
- 設定可能なフィールド選択と注文経過日数フィルタリングによるGDPRコンプライアンスのための注文匿名化アクション
- フィールドの非表示、カスタムラベル設定、一括作成最大数の制御オプションを持つカスタムSKUフィールドウィジェット
- hook_commerce_bulk_variation_alter()を介したカスタムモジュール統合を可能にするPass to hookアクション
- バリエーション統計(総可能数、作成済み、未使用、重複)を表示するViewsベースの管理インターフェース
- Drushコマンドサポートを備えたダミー商品生成用のCommerce Generateサブモジュール
Use Cases
すべての商品バリエーションを一括作成
複数の属性を持つ商品がある場合(例:サイズS/M/L/XLと色:赤/青/緑のTシャツ)、「バリエーションを複製」アクションを使用して、可能な12種類すべての組み合わせを自動的に作成できます。1つのバリエーションを選択し、アクションを選び、オプションで属性オプションを絞り込んで送信します。モジュールは未使用のすべての組み合わせを計算し、自動生成されたSKUでそれらを作成します。
季節セールのための一括価格調整
複数の商品に20%割引を適用するには、バリエーションタブに移動し、調整が必要なすべてのバリエーションを選択し、「価格を調整」アクションを選択し、「減算」を選び、「20」を入力し、「パーセンテージ」を選択して送信します。これにより、数百のバリエーション全体の価格設定が効率的に更新されます。
GDPRに準拠した注文の匿名化
GDPRコンプライアンスのために古い顧客データを匿名化するには、注文ページに移動し、匿名化する注文を選択し、「注文を匿名化」アクションを選択し、匿名化するフィールド(ip_address、billing_profile、shipping_profile、mail、data)を選択し、オプションで注文の経過日数フィルターを設定して送信します。提供されているサンプルコードを使用してcron経由で自動化することもできます。
開発用のテスト商品を生成
Commerce Generateサブモジュールを有効にし、/admin/config/development/generate/productsのUIまたはDrushコマンド「drush gprod 100」を使用して、開発とテストのためにバリエーション、価格、画像を含む現実的なテスト商品をストアに素早く追加できます。
カスタムSKUパターンの実装
カスタムモジュールでhook_bulk_creator_sku_alter()を実装して、一括バリエーション複製機能を使用する際にビジネスロジックに従ったSKU(例:商品タイプコード、連番、属性コードを含む)を生成します。
Tips
- バリエーションタブの統計表示を使用して、存在するバリエーション数と総可能組み合わせ数を追跡してください
- サーバー容量に基づいてSKUウィジェットの「最大数」設定を構成してください - 複雑な商品の場合は小さい値から始めてください
- 「Pass to hook」アクションは無限のカスタマイズ可能性を提供します - カスタムバッチ処理のためにhook_commerce_bulk_variation_alter()を実装してください
- 注文の匿名化はcron経由で自動化できます - commerce_bulk.moduleのサンプルコードを参照してください
- Commerce Generateでテスト商品を生成する際は、より現実的なランダムバリエーションの組み合わせのために--shuffle-variationsオプションを使用してください
Technical Details
Admin Pages 4
/product/{product_id}/variations
一括操作サポート付きで特定の商品のすべてのバリエーションを表示および管理します。最大可能バリエーション数、現在作成済みのバリエーション数、未使用の組み合わせを示す統計を表示します。重複したバリエーションの組み合わせについて警告します。
/admin/commerce-bulk-attribute/{commerce_product_attribute}
一括操作で属性値を管理します。商品属性リストページの「Bulk」操作ボタンをクリックしてアクセスします。
/admin/marketplace/vocabulary/{taxonomy_vocabulary}
一括操作でタクソノミータームを管理します。タクソノミーボキャブラリリストページの「Bulk」操作ボタンをクリックしてアクセスします。
/admin/commerce/config/product-variation-types/{type}/edit/form-display
バリエーション作成時の自動SKU生成のためのCommerce Bulk SKUウィジェット設定を構成します。
Hooks 4
hook_commerce_bulk_variation_alter
「Pass to hook」一括アクション中に商品バリエーションを変更することをモジュールに許可します。選択されたバリエーションと、アクションフォームから渡されたオプションのJSON/XMLデータを受け取ります。
hook_bulk_creator_sku_alter
商品バリエーションを保存する前に自動生成されたSKUを変更することをモジュールに許可します。カスタムSKUパターンの実装に役立ちます。
hook_commerce_bulk_attribute_value_alter
「Change or add names」一括アクション中に属性値フィールドを変更することをモジュールに許可します。
hook_commerce_bulk_term_new_alter
「Duplicate, reorder, rename」一括アクション中にタクソノミータームフィールドを変更することをモジュールに許可します。
Drush Commands 1
drush generate-products [num]
ダミーコマース商品を生成します。エイリアス:genpr, gprod
Troubleshooting 4
SKUウィジェット設定の「最大数」設定をより小さい数(例:100)に調整してください。「N個のバリエーションを作成」ボタンを複数回押してバリエーションを複数のバッチで作成します。複製アクションフォームのオプションを使用してphp.iniのmax_execution_timeを一時的に増やすこともできます。
モジュールは重複した属性の組み合わせが存在する場合に警告を表示します。バリエーションタブに表示される重複リストを確認し、「バリエーションを削除」アクションを使用して不要な重複を削除してください。
SKUはDrupalサイト全体で一意である必要があり、60文字を超えることはできません。一意性を確保するためにSKUのプレフィックス/サフィックス設定を調整するか、カスタム生成ロジックのためにhook_bulk_creator_sku_alter()を実装してください。
一括タイトル変更を使用する前に、商品バリエーションタイプ設定で「属性値に基づいてバリエーションタイトルを生成」オプションを無効にしてください。
Security Notes 3
- 注文の匿名化は顧客データを永久に変更します - 一括匿名化の前に必ずバックアップを取ってください
- 「バリエーションを削除」と「タームを削除」アクションはデータを永久に削除し、元に戻すことはできません
- 一括操作へのアクセスには適切なCommerceおよびタクソノミー管理権限が必要です