web-dev-qa-db-ja.com

特定の広告申込情報タイプが存在するかどうかを確認する

私は Commerce Userpoints を使用して、購入に基づいてポイントを付与します。その後、顧客はそれらのリワードを将来の購入で割引に使用できます。

ユーザーが既に割引を適用している場合、チェックアウトペインをカスタマイズしたいと思います。 Commerce Userpoints Discountは、userpointsというラインアイテムタイプを作成します。私の最初のアイデアは、現在の注文にuserpointsタイプのラインアイテムが含まれているかどうかを確認することでしたが、その方法がわかりません。何か助けていただければ幸いです!

3
MrPeanut

次の2つの方法のいずれかを使用して、オーダーの特定のタイプのラインアイテムを確認できます。

注文を受けて、配送品目を探しましょう。

// Load your order.
$order = commerce_order_load(/* Order ID */);

メタデータラッパーなし

if (!empty($order->commerce_line_items)) {
  // Iterate over the line items.
  foreach ($order->commerce_line_items[LANGUAGE_NONE] as $line_item_data) {
    $line_item = commerce_line_item_load($line_item_data['line_item_id']);
    // Check the type.
    if ($line_item->type == 'shipping') {
      // Shipping line item found. Do the things.
    }
  }
}

ラッパー付き

$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
// Iteration is a bit simpler here.
foreach ($order_wrapper->commerce_line_items as $line_item) {
  // We have to access it using ->value().
  if ($line_item->type->value() == 'shipping') {
    // Shipping line item found. Do the things.
  }
}
3
nvahalik