Mam produkty pakietowe z 3 zaznaczonymi polami wyboru jako domyślne. Chcę dodać produkt pakietu z listy kategorii stron (list.phtml
) bez konieczności określania opcji. Jak mogę to zrobić?Dodaj pakiet produktów do koszyka bez konieczności podawania opcji
Odpowiedz
Mój projekt musiał pokazywać tylko jedną linię dla produktu pakowanego, domyślnie wybrane opcje ukryte i zakupione przy zakupie pakietu. Produkt można kupić z widoku kategorii.
Bundle config:
- Bundle z dynamicznym cenie
- opcje są skonfigurowane tak, aby być wymagane, wartości domyślne i przyciski radiowe domyślnie wybrane wartości
poszedłem do mojego widoku niestandardowego kategoria szablonu i dodano:
<form action="<?php echo Mage::$this->helper('checkout/cart')->getAddUrl($product); ?>" method="post" id="product_addtocart_form_<?php echo $product->getId()?>">
<?php
// If we have a bundle:
if ($_product->getTypeId() == 'bundle'){
$selectionCollection = $_product->getTypeInstance(true)->getSelectionsCollection(
$_product->getTypeInstance(true)->getOptionsIds($_product), $_product
);
foreach($selectionCollection as $option) {
echo '<input type="hidden" name="bundle_option[' . $option->option_id . ']" value="' . $option->selection_id . '" />';
echo '<input type="hidden" name="bundle_option_qty[' . $option->option_id . ']" value="1" />';
}//end: foreach $selectionCollection
} // end: if $_product == bundle
?>
<input type="text" name="qty" class="qty" maxlength="4" value="1" />
<button type="button" onclick="this.form.submit()" />
</form>
Powyższa kreacja es formularz dodawania do koszyka, pobiera podprodukty pakietów, jeśli mamy pakiet i domyślnie wszystkie opcje. Działa jak urok!
Ten został opublikowany jakiś czas temu, ale chciałem dać ci znać, że to było bardzo przydatne dzięki! –
Zgoda! Dzięki! –
To nie działa dla mnie. Magento 1.7.0.0. Kiedy kupuję produkt w pakiecie w ten sposób przycisk kojarzy tylko jedną z czterech dostępnych opcji. Wydaje się działać, ale jeśli spojrzysz na kolejność i zapasy opcji, tylko jedna się zmieniła. –
OK, w końcu udało mi się pracować tak, jak powinienem.
Wgenie postawiła mnie w dobrym kierunku.
używam tego kodu zamiast Wgenie i to nie tylko dodaje element do koszyka ale kontroluje akcji z opcji wiązki i pokazuje Niedostępne jeśli jedna opcja na stanie:
<?php if ($_item->getTypeId() == 'bundle') : ?>
<form action="<?php echo Mage::helper('checkout/cart')->getAddUrl($_item); ?>" method="post" id="product_addtocart_form_<?php echo $_item->getId()?>">
<?php $selectionCollection = $_item->getTypeInstance(true)->getSelectionsCollection(
$_item->getTypeInstance(true)->getOptionsIds($_item), $_item
); ?>
<?php $saleable = true; ?>
<?php foreach($selectionCollection as $option) : ?>
<input type="hidden" name="bundle_option[<?php echo $option->option_id; ?>][]" value="<?php echo $option->selection_id; ?>" />
<input type="hidden" name="bundle_option_qty[<?php echo $option->option_id; ?>][]" value="1" />
<?php
//Stock control for each bundle option
$opt_product = Mage::getModel('catalog/product')->load($option->product_id);
$stocklevel = (int)Mage::getModel('cataloginventory/stock_item')
->loadByProduct($opt_product)->getQty();
if($stocklevel<=0)
$saleable = false;
?>
<?php endforeach; ?>
<?php if($saleable): ?>
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button" onclick="this.form.submit()"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
<?php else: ?>
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
<?php endif; ?>
</form><?php else : ?>
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button" onclick="setLocation('<?php echo $this->getAddToCartUrl($_item) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button><?php endif; ?>
Btw, Magento 1.7.0.0 –
Tak, to rozwiązanie jest lepsze. –
miałem zrobić coś podobnego na stronie Magento 1.7. Udało mi się dodać pakiet produktów do koszyka z list produktów bez przekierowania na stronę produktu.
/app/design/frontend/your_package/your_theme/template/catalog/product/list.phtml
Wymienić wystąpień
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
z
<?php
$productAddUrl = $this->helper('checkout/cart')->getAddUrl($_product);
if ($_product->getTypeId() == 'bundle'):
$bundleOptions = '?';
$selectionCollection = $_product->getTypeInstance(true)->getSelectionsCollection($_product->getTypeInstance(true)->getOptionsIds($_product), $_product);
foreach($selectionCollection as $option):
$bundleOptions .= '&bundle_option[' . $option->option_id . ']=' . $option->selection_id;
$bundleOptions .= '&bundle_option_qty[' . $option->option_id . ']=1';
endforeach;
$productAddUrl .= $bundleOptions;
endif;
?>
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $productAddUrl ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
Rozwiązanie Joras działa, ale może tworzyć e wiele pozycji w ofercie, z których każda zawiera ten sam pakiet (z identycznymi wyborami). Powodem jest to, że podczas porównywania nowo dodanego pakietu z elementami cudzysłowu, Magento (testowane w wersji 1.9.2.2) tworzy łańcuch oznaczeń bundel_identity złożony z
[product_id] _ [option_id_1] _ [option_qty _] _ [option_id_2] _ [option_qty_2] ...
Ten ciąg znaków zależy od kolejności przesłanych parametrów. Aby postępować zgodnie z zamówieniem określonym w ustawieniach produktu, należy użyć:
$typeInstance = $product->getTypeInstance(true)
->setStoreFilter($product->getStoreId(), $product);
$optionCollection = $typeInstance->getOptionsCollection($product);
foreach ($optionCollection as $option) {
// build your query string here....
}
Również jest to dość hakowate w tym szablonie.Lepsza opcja imo
override Mage_Catalog_Block_Product_List::getAddToCartUrl($product, $additional = array())
- 1. Przedłużanie koszyka produktów Magento
- 2. Dodawanie Woocommerce Dodaj do koszyka Przycisk do pokrewnych produktów i listy produktów
- 3. Jak dodać nowe paczki produktów do koszyka?
- 4. Dodaj produkt do koszyka za pomocą Shopify
- 5. Programowe dodawanie produktów do zdalnego koszyka użytkownika magento
- 6. Prestashop: Dodaj produkty do nowego koszyka
- 7. API mydła Magento Dodaj paczkę Produkt do koszyka
- 8. Paypal Przycisk Dodaj do koszyka - jak wygenerować za pomocą Java?
- 9. WooCommerce - Ajax Dodaj do koszyka i aktualizuj Totalnie
- 10. Reguła cenowa koszyka na zakupy, z wyłączeniem produktów specjalnych
- 11. Użyj rury bez podawania pierwszego argumentu
- 12. WooCommerce: Dodaj produkt do koszyka z pominięciem ceny?
- 13. Woocommerce dodaj do koszyka ajax i mini-cart
- 14. Wyświetlanie informacji z MATLAB bez podawania wiersza
- 15. Opłaty za dodawanie warunkowe do koszyka
- 16. Magento - Dodaj produkt do koszyka przez ciąg zapytania bez parametru form_key
- 17. Jak wyładować pakiet bez restartowania R?
- 18. Woocommerce, Jak edytować wiadomość "dodano do koszyka"
- 19. Woocommerce pokazuje, że koszyk jest pusty w firefoxie, po dodaniu produktów do koszyka
- 20. jak wdrożyć pakiet pocztowy MSbuild lokalnie lub zdalnie, bez konieczności zaangażowania IIS.
- 21. Przewijanie RichEdita bez konieczności ustawiania ostrości
- 22. Jak zaktualizować pakiet iPhone SDK bez konieczności ponownego pobierania kodu Xcode?
- 23. Dodawanie tekstu do JTextPane bez konieczności jego edycji przez użytkownika?
- 24. window.print() - bez konieczności otwierania okna drukowania
- 25. Zaktualizuj konfigurację logowania bez konieczności ponownego wdrażania.
- 26. Czy istnieje pakiet do przetwarzania opcji wiersza poleceń w R?
- 27. Wysyłanie elementów koszyka na zakupy do PayPal
- 28. Obserwator usuniętych przedmiotów z koszyka
- 29. Dodaj ikonę do opcji jonowej w wyborze jonów
- 30. ZF2 Dodaj atrybut niestandardowy do opcji w formularzu wyboru elementu
Czy masz na to szczęście? Naprawdę muszę być w stanie to zrobić i o ile widzę, jest to błąd Magento. –