Magento

PHP ile Magento’da Bir Grup Ürünü Sepete Ekleme

Merhaba arkadaşlar,

Magento’da basit ürünleri(simple prodcut) sepete atmanızı sağlayacak PHP kodu oldukça basittir. Tek ihtiyacınız olan ‘$cart->addProduct()‘ fonksiyonudur. Bu fonksiyonla beraber ürün id ve miktarını da gönderirsiniz. Fakat grup ürünlerin sepete atılması biraz farklıdır.

Öncelikle grup ürün nedir diyenlerin sorularını cevaplandıralım. Grup ürün olarak bir ürün açarsınız ve ürüne farklı ürünler bağlarsınız. Bağlayacağınız ürünler daha önce basit olarak girilmiş ürünlerdir. “Ekran Kartları” diye bir grup ürün seçersiniz ve buna “A ekran kartı” ve “B ekran kartı” ürünlerini bağlarsınız. Müşterilerini “Ekran Kartları” ürünüe girdiği zaman bu iki üründen bir tanesini veya ikisini aynı anda dilediği miktarda sipariş edebilir. Daha detaylı bilgi isterseniz kendiniz bir grup ürün ekleyip buna bir kaç ürünü bağlarsınız ve sitenizde kontrol edebilirsiniz.

Grup ürünleri sepete ekleme işlemi de oldukça basit bir işlemdir aslında. Bunun için bir $super_grup isimli bir dizi oluşturacağız ve bu dizide bağlanan ürünlerden satın alınmak istenilenleri ve miktarlarını addProduct() fonksiyonu ile işleyeceğiz. Bunun için aşağıdaki kodu kullanacağız:

<?php
// İlgili ürünleri tutmamızı sağlayacak dizi
$super_grup = array();

// Grup ürünün id'si
$grup_urun_id = <grup_urun_id>;

// Bu grup urunde bağlanan urunlerden bizim sepete ekleteceklerimiz
$bagli_urunler = array('<bagli_urun_id_1>','<bagli_urun_id_2>','<bagli_urun_id_3>');
// Bu grup üründe yedi tane bağlı ürün var fakat biz üç tanesi seçtik ;) Yani isteğe göre <bagli_urun_id_4> vs. ekleyebilirdik

// Her bağlı ürün için ikişer tane sepete atalım
$adet = 2;

// Sepete atılacak bağlı ürünleri $super_grup dizisine atalım ve ürün id'lerini de dizi anahtarı olarak belirleyelim ve karşılarına da miktarlarını yazalım
foreach($bagli_urunler as $bagli_urun){
 if(intval($bagli_urun)){
   $super_grup[$bagli_urun] = $adet;
 }
}

// Grup ürünü sepete ekleyelim
try {
 // Grup ürün bilgileri çekmek için gerekli nesneyi yükleyelim
 $urun = Mage::getModel('catalog/product')->load($grup_urun_id);

 // Ürün uygun mu kontrol edelim
 if (!$urun) {
  echo "Hata ile karşılaşıldı!";
  return;
 }

 // Sepet nesnesini çağıralım
 $sepet = Mage::getModel('checkout/cart');

 // Grup ürün için parametreleri alalım
 $parametreler = array('super_group' => $super_grup);

 // Ürünleri belirlediğimiz parametrelerle sepete atalım ve kaydedelim
 $sepet->addProduct($urun, $parametreler)->save();

 Mage::getSingleton('checkout/session')->setCartWasUpdated(true);

 echo $this->__('%s sepetinize eklendi.', Mage::helper('core')->htmlEscape($urun->getName()));

}
catch (Mage_Core_Exception $e){
 if (Mage::getSingleton('checkout/session')->getUseNotice(true)){
  echo $this->__($e->getMessage());
 }
 else{
  $messages = array_unique(explode("n", $e->getMessage()));
  foreach ($messages as $message) {
   echo "<br />".$message;
  }
 }
}
catch (Exception $e){
 echo $this->__('Ürünü sepete ekleyemezsiniz.');
}
?>

Yukarıdaki kodda nerede ne yaptığımızı açıkladım. Umarım işinize yarar,
Kolay gelsin

Post Author: Oral ÜNAL

Web geliştirmeyi başta meslek olarak hayal eden fakat daha sonra bir hobi haline getiren birisiyim işte.

Yorum yazma sırası sizde!