0

Drupal コマース モジュールを使用して、Drupal 7 でチェックアウト プロセスの後にいくつかのビジネス ロジックを実行しようとしています。フック hook_commerce_checkout_complete を使用できるというドキュメントを読みましたが、呼び出されていません

function api_manager_commerce_checkout_complete($order) {
    $ow = entity_metadata_wrapper('commerce_order', $order);

    foreach ($ow->commerce_line_items as $line_item) {
     $sku = $line_item->commerce_product->sku->value();

     $record = array(
      'uid' => get_user_id(),
      'sku' => $sku,
      'token' => uniqid(),
     );

     drupal_write_record('api_manager_product_user', $record);
    }

}

参考までに、チェックアウト設定で「支払い」と「請求情報」を無効にしました

4

1 に答える 1

3

Drupal に新しいフックが実装されるたびに、キャッシュ ( class ) をクリアする必要があります。そうして初めて、その特定のフックが利用可能になり、呼び出されたときに起動されます。

devel モジュールを使用している場合は、module_implements関数を使用して、フックが Drupal によってシステムによって認識されているかどうかを確認できます。Devel モジュールは、 http://www.mysite.com/devel/phpでこのようなスニペットを試すための便利なツールを提供します。

dpm(module_implements('commerce_checkout_complete'));

モジュールの名前が上記の関数の出力としてリストされていない場合は、フックが認識されていないことを意味します。前述のように、そのような場合はキャッシュをクリアしてください。

于 2012-10-20T13:00:59.187 に答える