कुल लागत दिखा लाइन आइटम जोड़ें


10

मैं Ubercart 2 में एक लाइन आइटम कैसे जोड़ सकता हूं जो सभी वस्तुओं की कुल लागत को जोड़ता है, न कि बेचने की कीमत? मैंने जेनेरिक लाइन आइटम हुक को क्लोन करने की कोशिश की है, और कॉलबैक के लिए कुछ इस तरह जोड़ें:

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

उपयोगकर्ता को चेकआउट पूरा करने से पहले, और स्टोर के मालिक और उपयोगकर्ता को मिलने वाले ईमेल में मुझे कार्ट में दिखने के लिए इस लाइन आइटम की आवश्यकता है (मैं ajax कार्ट का उपयोग कर रहा हूं)। क्या मुझे uc_order के बाहर इस कोड के लिए थोड़ा मॉड्यूल बनाने की आवश्यकता है? मुझे कोड ठीक से याद नहीं है क्योंकि यह मेरे काम के कंप्यूटर पर है, लेकिन मुझे लगता है कि मैं इसे गलत जगह पर रख रहा हूं। किसी भी संकेत के लिए धन्यवाद।

जवाबों:


1

मैंने hook_uc_line_item () का उपयोग करके एक लाइन आइटम बनाया, फिर हुक_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);
      }
    }
  }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.