เพิ่มรายการโฆษณาที่แสดงต้นทุนรวม


10

ฉันจะเพิ่มรายการโฆษณาใน Ubercart 2 ที่รวมค่าใช้จ่ายทั้งหมดของรายการทั้งหมดไม่ใช่ราคาขายได้อย่างไร ฉันพยายามโคลนเบ็ดรายการโฆษณาทั่วไปและเพิ่มสิ่งนี้สำหรับการโทรกลับ:

for each($op->products as item){
  $cost += $item->cost;
}

ฉันต้องการให้รายการโฆษณานี้ปรากฏในรถเข็น (ฉันใช้ตะกร้า ajax) ในบานหน้าต่างคำสั่งซื้อก่อนที่ผู้ใช้จะชำระเงินเสร็จและในอีเมลที่เจ้าของร้านและผู้ใช้ได้รับ ฉันต้องสร้างโมดูลเล็กน้อยสำหรับโค้ดนี้นอก uc_order หรือไม่ ฉันจำรหัสไม่ถูกต้องเหมือนที่อยู่ในคอมพิวเตอร์ที่ทำงานของฉัน แต่ฉันคิดว่าฉันวางมันผิดที่ ขอบคุณสำหรับคำแนะนำใด ๆ

คำตอบ:


1

ฉันสร้างรายการโฆษณาโดยใช้ hook_uc_line_item () จากนั้นเพิ่มรายการโฆษณาใน hook_uc_order ()

ผลิตภัณฑ์ขั้นสุดท้ายดูเหมือนว่า:

/*
 * Implement hook_uc_line_item()
 */
function my_module_uc_line_item() {

  $items[] = array(
    'id' => 'handling_fee',
    'title' => t('Handling Fee'),
    'weight' => 5,
    'stored' => TRUE,
    'calculated' => TRUE,
    'display_only' => FALSE,
  );
  return $items;
}

/**
 * Implement hook_uc_order()
 */
function my_module_uc_order($op, $order, $arg2) {

  // This is the handling fee. Add only if the user is a professional and there
  // are shippable products in the cart.
  if  ($op == 'save') {
    global $user;

    if (in_array('professional', array_values($user->roles))) {


      // Determine if the fee is needed. If their are shippable items in the cart.
      $needs_fee = FALSE;
      foreach ($order->products as $pid => $product) {
        if ($product->shippable) {
          $needs_fee = TRUE;
        }
      }

      $line_items = uc_order_load_line_items($order);

      // Determine if the fee has already been applied.
      $has_fee = FALSE;
      foreach ($line_items as $key => $line_item) {
        if ($line_item['type'] == 'handling_fee') {
          $has_fee = $line_item['line_item_id'];
        }
      }

      // If the cart does not already have the fee and their are shippable items
      // add them.
      if ($has_fee === FALSE && $needs_fee) {
        uc_order_line_item_add($order->order_id, 'handling_fee', "Handling Fee", 9.95 , 5, null);
      }
      // If it has a fee and does not need one delete the fee line item.
      elseif ($has_fee !== FALSE && !$needs_fee) {
        uc_order_delete_line_item($has_fee);
      }
    }
  }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.