sepete ayrı satırlara eklemek İstemcim, sattıkları bir ürünün içindeki her bir basit ürünün (Giyim Üst ve Alt), her seferinde sepette ayrı bir satır öğesi olarak eklenmesini istemektedir. kullanıcı ekler. Bunu nasıl başaracağımı bana kim yönlendirebilir? MVC ve Zend Framework ile oldukça iyiyim, ancak sepete paketlenmiş ürünlerin eklenmesini kontrol eden tam dosyaları bulmaya veya bu öğeleri ayrı ayrı eklemek için alternatif bir yönteme ihtiyacım var. Lütfen bu kıyafet için mümkün olan tek ürün tipinin Paketlenmiş ürün tipi olduğunu varsayalım. Bir gözlemci gerekecektirMagento: Bir paketten basit ürünleri sepette
cevap
:
<checkout_cart_product_add_after>
<observers>
<reporting>
<type>singleton</type>
<class>Yourcompany_yourmodelname_Model_Observer</class>
<method>onCartProductAdd</method>
</reporting>
</observers>
</checkout_cart_product_add_after>
Sonra gözlemci yapın:
class ourcompany_yourmodelname_Model_Observer extends Mage_Core_Model_Abstract
{
/**
* Binds to the checkout_cart_product_add_after Event and passes control to the helper function to process the quote
*
* @param Varien_Event_Observer $observer
* @return void
*/
public function onCartProductAdd($observer){
$product = $observer->getProduct();
$isProductBundle = ($product->getTypeId() == 'bundle');
$items_to_add = array();
$oTypeInstance = $oProduct->getTypeInstance(true);
$aSelections = $oTypeInstance->getSelectionsCollection($aOptionIds, $product);
$aOptions = $oTypeInstance->getOptionsByIds($aOptionIds, $product);
$bundleOptions = $aOptions->appendSelections($aSelections, true);
foreach ($bundleOptions as $bundleOption) {
if ($bundleOption->getSelections()) {
$bundleSelections = $bundleOption->getSelections();
foreach ($bundleSelections as $bundleSelection) {
$items_to_add[] = $bundleSelection.getID();
}
}
}
insertExtractedProducts($items_to_add);
}
/**
* Add extracted products into quote
*
* @param array $items_to_add
*/
public function insertExtractedProducts($items_to_add){
/**@var $cart Mage_Checkout_Model_Cart**/
$cart = Mage::helper('checkout/cart')->getCart();
$ids_to_add = array();
foreach($items_to_add as $item_to_be_added){
$ids_to_add[] = $item_to_be_added->getProductId();
}
$cart->addProductsByIDs($ids_to_add);
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
}
}
Sadece basit örnek, ama yardımcı olabilir.
Birlikte ürünler anlamak için karmaşık olabilir kod aracılığı ile çalışırken: sonunda bağlantılar olacak olan pek çok seçeneğe birine sahip
Her Birlikte ürün: Burada örnek bir resimdir Alışveriş sepetindeki pakete eklenecek ürünler.
Her Seçenek, bir araya getirilmiş üründe, Alışveriş sepetinde sona erecek bağlantılı ürünler olacak bire bir Seçimlerden oluşur. Bir Seçim, genellikle varsayılan olarak ayarlanabilir ve zaten ürün sayfasında seçilecektir. Bu bağlantıda, paketlenmiş ürünlerin nasıl oluşturulacağı ve yapılandırılacağı hakkında daha fazla bilgi bulunabilir, çünkü bu belgede, yalnızca programlama tarafını tartışacağız. birlikte ürünün ekranı sayfası, bu gibi görünecektir:
siz “Sepete Ekle” tıkladım kez O, alışveriş sepetinde gibi görünebilir:
Sample Shampoo
1 x Moisturiser-125ml $29.95
Default Conditioner
1 x Moisturiser-60g $99.95
sorguya zaman Paketi Numune kod aracılığıyla bu ürün, herhangi normal bir ürün gibi yüklemek: Bu yüklendikten sonra yüklemek böylece
$oProduct->load($vProductId);
, sen bir ürün tipi örneğini almak gerekir Bu ürün tipi için seçenekler.
$oTypeInstance = $oProduct->getTypeInstance(true);
Şimdi bu şekilde bu ürün için opsiyon kimliği yılların listesini alabilirsiniz:
$oTypeInstance = $oProduct->getTypeInstance(true);
Seçimlerini sorgulamak için, ardından Seçenekler olsun, bir koleksiyona seçeneklerin listesini katacak toplama, hem de kendi Seçimleri:
$aSelections = $oTypeInstance->getSelectionsCollection($aOptionIds, $oProduct);
$aOptions = $oTypeInstance->getOptionsByIds($aOptionIds, $oProduct);
$bundleOptions = $aOptions->appendSelections($aSelections, true);
Şimdi Seçenekleri Koleksiyon sahiptir ve her Opsiyon Selections bir koleksiyona sahip olacak. Şimdi seçenekler arasında dolaşabilir ve onların Seçimlerine bakabiliriz.
foreach ($bundleOptions as $bundleOption) {
if ($bundleOption->getSelections()) {
$bundleSelections = $bundleOption->getSelections();
foreach ($bundleSelections as $bundleSelection) {
// get some data here
$vName = $bundleOption->getTitle();
}
}
}
Birlikte ürün için Gerekli Seçim Ürünleri listesini almak için aşağıdaki kodu kullanabilirsiniz: Daha sonra kimlikleri dizisi döngü ve ürünlerini yükleyebilirsiniz
$requiredChildren = $this->getChildrenIds($product->getId(),$required=true);
onların Bu ürünlerle ilgili daha fazla bilgi almak için ID'ler.
/**
* @var Mage_Bundle_Model_Product_Type
*/
$typeInstance = $this->getProduct()->getTypeInstance(true);
// get bundle options
$optionsQuoteItemOption = $this->getItem()->getOptionByCode('bundle_option_ids');
$bundleOptionsIds = unserialize($optionsQuoteItemOption->getValue());
if ($bundleOptionsIds) {
/**
* @var Mage_Bundle_Model_Mysql4_Option_Collection
*/
$optionsCollection = $typeInstance->getOptionsByIds($bundleOptionsIds, $this->getProduct());
// get and add bundle selections collection
$selectionsQuoteItemOption = $this->getItem()->getOptionByCode('bundle_selection_ids');
$selectionsCollection = $typeInstance->getSelectionsByIds(
unserialize($selectionsQuoteItemOption->getValue()),
$this->getProduct()
);
$bundleOptions = $optionsCollection->appendSelections($selectionsCollection, true);
foreach ($bundleOptions as $bundleOption) {
if ($bundleOption->getSelections()) {
$label = $bundleOption->getTitle()
$bundleSelections = $bundleOption->getSelections();
foreach ($bundleSelections as $bundleSelection) {
$sName = $bundleSelection->getName();
}
// some more code here to do stuff
}
}
}
Bu kod Seçenek alır: alışveriş kartında Grup halindeki ürünün seçilen seçenekleri arasında döngü için alışveriş sepeti
yılında
Birlikte ürünler, böyle bir şey kullanabilirsiniz Alıntı Öğe Ürünü Paketinden ve daha sonra bu ürün için Seçeneklerini bir koleksiyonda alır ve ardından “Seçilen” Seçenek Seçimini bulur.
hth, Shaun
Bana verdiğiniz yukarıdaki örneği uyguladım, ancak yalnızca ürünlere değil, pakete eklenen ürünle ilgili her seçeneği alıyorum. kullanıcı seçildi. Herhangi bir tavsiye? Ayrıca, yalnızca birlikte verilen ürünü kopyalamak ve kullanıcı tarafından seçilen her bir ürüne seçeneklerden birini eklemekle ilgili bilgileriniz var mı? Örneğin: kullanıcı küçük bir üst ve küçük alt seçer; Sepet, küçük bir üst ve daha sonra küçük bir alt ile birlikte başka bir ürün ile birlikte bir ürün gösterecektir. – nnelson
, eklenen mevcut ürüne işaret eden $? Gözlemde – ShaunOReilly
$ bu kapsamda değildir. Ürünü gözlemciye aldığımda, yapılandırılmış paket yerine genel ürünü alıyor. BenSelections() aldığımda, işlev, kullanıcı tarafından seçilen seçimler yerine, o seçenek için olası tüm seçimleri döndürür. – nnelson
ben sepetinde ayrı öğeler olarak paket içerik eklemek için müşteri talebini çözmek için bunu yaptı. Sadece dosyanın cartController yılında
if ($product->getTypeId() == 'bundle') {
$request = new Varien_Object($params);
$cartCandidates = $product->getTypeInstance(true)->prepareForCartAdvanced($request, $product, Mage_Catalog_Model_Product_Type_Abstract::PROCESS_MODE_FULL);
$idstoadd = array();
foreach ($cartCandidates as $cartCandidate) {
if ($cartCandidate->getTypeId() == 'simple') {
for ($i = 0; $i < $cartCandidate->getCartQty(); $i++) {
$idstoadd[] = $cartCandidate->getId();
}
}
}
$cart->addProductsByIds($idstoadd);
} else {
$cart->addProduct($product, $params);
}
ile
$cart->addProduct($product, $params)
değiştirin.
sadece bir tutam düzeltme için kullanıcı için bir paket için gerekli ($ i = 0; $ i <$ cartCandidate-> getCartQty() * $ params ['qty']; $ i ++) { – user3803968
O zaman bir yolu var mı Paketlenmiş ürünü, ancak çocuk ürünleri olmadan, şu anda sepetin içinde oldukları gibi ekleyin. – user2029763
Senaryonuza bakmaya çalışıyorum ama sadece sorunuza dayanarak, mevcut çocuk arabasına dayalı bir Bundle eklemenin mümkün olduğunu düşünüyorum. Başlamak için kuralları tanımlamanız gerektiğine dikkat edin aksi halde – user3803968
- 1. Filtre Magento koleksiyonu değil, ürünleri kullanarak, farklı
- 2. en son ürünleri kullanarak magento sabun API
- 3. Magento - Sepette toplam öğe sayısı header.phtml olarak alınabilir
- 4. Ürünleri
- 5. Magento Ürün Koleksiyonu Belirli kategorilerden sadece ürünleri alın
- 6. Magento ana sayfasında yeni ürünleri OTOMATİK OLARAK nasıl görüntülerim?
- 7. Magento - Ürün Grubu ile ilişkili ürünleri nasıl alabilirim?
- 8. yapılandırılabilir ürünün SONRA yapılandırılabilir ürüne ait basit ürünler magento olarak
- 9. Magento: Kategori sayfasında, yapılandırılabilir bir
- 10. Belirli bir paketten bir işlevi yükleme
- 11. Magento ürün kategorisi
- 12. Paketten veya işlevden nasıl silinir?
- 13. Magento 1.5 ürün incelemeleri nerede depolanıyor?
- 14. Magento addFieldToFilter izin NULL
- 15. Symfony2: Tek bir hizmeti paketten, kendi sınıfımla nasıl geçersiz kılarım?
- 16. Magento özel blokları
- 17. Magento -
- 18. Magento
- 19. magento
- 20. Magento
- 21. Magento
- 22. Magento
- 23. Magento
- 24. Magento
- 25. ListView içindeki tüm ürünleri seç
- 26. Magento
- 27. Tüm yerel veri depolama ürünleri
- 28. Magento
- 29. Dalgalı/kontrolörde 'ürünleri' gösterme/alma
- 30. Symfony 2 Başka bir paketten LESS dosyalarını alma
Cevabınız daha net olmak için güncellendi – ShaunOReilly