SORU
24 ŞUBAT 2011, PERŞEMBE


Programlı olarak fiyat değişikliği ile sepete ürün Ekle

Sepeti programlı bir ürün eklemek istiyorum. Ayrıca, sepete eklendiğinde ürünün fiyatını değiştirmek istiyorum.

Sanırım, benim ürünün fiyatı 100 dolar. Sepete eklendiğinde 90 dolar için değiştirmek istedim.

Sepete ürün ekledim. Ancak, ürünün fiyatını değiştirmek için kuramıyorum.

Mümkün mü?

Burada sepete ürün ekleme kod:-

$cart = Mage::getSingleton('checkout/cart');

try {   
    $cart->addProduct($product, array('qty' => 1));
    $cart->save();
}
catch (Exception $ex) {
    echo $ex->getMessage();
}

CEVAP
8 HAZİRAN 2011, ÇARŞAMBA


Profesyonel çekirdek kod içine biraz kazma sonra, $item->setCustomPrice() $item->setOriginalPrice() olması için $item->getProduct()->setIsSuperMode(true) kullanmak gerekir.

Burada checkout_cart_product_add_after checkout_cart_update_items_after olayları dinleyen bir Gözlemci içinde kullanabileceğiniz bazı örnek kod. Kod mantıklı checkout_cart_product_add_after yalnızca bir öğe denir ve checkout_cart_update_items_after sepeti tüm öğeleri denir hariç aynıdır. Bu kodu ayrı bir örnek olarak 2 yöntem içine sadece yineleniyor.

Olay: checkout_cart_product_add_after

/**
 * @param Varien_Event_Observer $observer
 */
public function applyDiscount(Varien_Event_Observer $observer)
{
    /* @var $item Mage_Sales_Model_Quote_Item */
    $item = $observer->getQuoteItem();
    if ($item->getParentItem()) {
        $item = $item->getParentItem();
    }

    // Discounted 25% off
    $percentDiscount = 0.25; 

    // This makes sure the discount isn't applied over and over when refreshing
    $specialPrice = $item->getOriginalPrice() - ($item->getOriginalPrice() * $percentDiscount);

    // Make sure we don't have a negative
    if ($specialPrice > 0) {
        $item->setCustomPrice($specialPrice);
        $item->setOriginalCustomPrice($specialPrice);
        $item->getProduct()->setIsSuperMode(true);
    }
}

Olay: checkout_cart_update_items_after

/**
 * @param Varien_Event_Observer $observer
 */
public function applyDiscounts(Varien_Event_Observer $observer)
{
    foreach ($observer->getCart()->getQuote()->getAllVisibleItems() as $item /* @var $item Mage_Sales_Model_Quote_Item */) {
         if ($item->getParentItem()) {
             $item = $item->getParentItem();
         }

         // Discounted 25% off
         $percentDiscount = 0.25; 

         // This makes sure the discount isn't applied over and over when refreshing
         $specialPrice = $item->getOriginalPrice() - ($item->getOriginalPrice() * $percentDiscount);

         // Make sure we don't have a negative
         if ($specialPrice > 0) {
             $item->setCustomPrice($specialPrice);
             $item->setOriginalCustomPrice($specialPrice);
             $item->getProduct()->setIsSuperMode(true);
         }
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ayite Atiwoto (superjiffrey)

    Ayite Atiwot

    29 EYLÜL 2010
  • Cartoonium

    Cartoonium

    11 NİSAN 2011
  • UKF

    UKF

    2 Aralık 2009