Tengo paquetes de productos con 3 casillas de verificación marcadas como predeterminadas. Deseo agregar un paquete de productos de la lista de categorías de páginas (list.phtml
) sin tener que especificar las opciones. ¿Cómo puedo hacer esto?Agregar paquete de productos al carrito sin tener que especificar las opciones
Respuesta
Mi proyecto necesitaba mostrar solo una línea para un producto agrupado, las opciones ocultas estaban seleccionadas y compradas por defecto al comprar el paquete. El producto puede ser comprado desde la vista de categoría.
paquete de configuración: Los valores
- paquete con precio dinámico
- opciones están configurados para ser requerido, los valores predeterminados y los botones de opción por defecto que aparecen
Fui a mi nueva plantilla categoría de vista y ha agregado lo siguiente:
<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>
La creatividad anterior es un add-to-cart-form, recupera los subproductos del paquete si tenemos un paquete y predetermina todas las opciones. ¡Funciona como un encanto!
Este fue publicado hace un tiempo pero quería hacerle saber que fue muy útil gracias. –
De acuerdo! ¡Gracias! –
Esto no funciona para mí. Magento 1.7.0.0. Cuando compro un producto incluido de esta manera, el botón solo asocia una opción de cuatro disponible. Parece estar funcionando, pero si observa el orden y el stock de las opciones, solo una ha cambiado. –
Ok, finalmente lo tengo funcionando como creo que debería.
Wgenie me puso en la dirección correcta.
Puedo usar este código en lugar de Wgenie de y no sólo añade el artículo al carro, pero controla el balance de las opciones de bloque, y no muestra disponible si una opción está fuera de stock:
<?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 –
Sí, esta solución es mejor. –
que tenía hacer algo similar en el sitio web de Magento 1.7. Pude agregar productos empaquetados al carro desde las listas de productos sin redireccionar a la página del producto.
/app/design/frontend/your_package/your_theme/template/catalog/product/list.phtml
Reemplazar ocurrencias de
<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>
con
<?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>
La solución de Joras funciona, pero puede crear e múltiples elementos en la cotización, cada uno con el mismo paquete (con selecciones idénticas). El motivo es que al comparar un paquete recién agregado con los elementos de cita, Magento (probado en 1.9.2.2) crea una cadena bundel_identity compuesta de
[id_producto] _ [opción_id_1] _ [opción_qty _] _ [opción_id_2] _ [option_qty_2] ...
La cadena depende del orden de los parámetros enviados. Para seguir el orden especificado en la configuración del producto use:
$typeInstance = $product->getTypeInstance(true)
->setStoreFilter($product->getStoreId(), $product);
$optionCollection = $typeInstance->getOptionsCollection($product);
foreach ($optionCollection as $option) {
// build your query string here....
}
También es bastante hacky hacer eso dentro de la plantilla.Mejor opción imo
override Mage_Catalog_Block_Product_List::getAddToCartUrl($product, $additional = array())
- 1. Magento: Agregar productos simples de un paquete a líneas separadas en el carrito
- 2. Carrito de compra Precio Regla que excluye productos en especial
- 3. ¿Cómo tener una opción que habilite otras opciones en Opciones de programas Boost sin usar variables?
- 4. Mecanismo estándar para tener opciones específicas del paquete en R?
- 5. Prestashop: agregar productos a un nuevo carro
- 6. Carriles para múltiples tipos de productos carrito de la compra
- 7. Magento: Agregue un producto "falso" al carrito/presupuesto
- 8. Cargar clases desde la carpeta sin especificar el paquete
- 9. Magento personalizado agregar al carrito proceso no funciona
- 10. Agregar librerías de apoyo al paquete NuGet sin agregar como referencias
- 11. Cómo agregar dependencias PyPi al paquete DEB
- 12. Comparación de productos Barra lateral Artículo no muestra productos
- 13. Grails: clasificación de salida de lista sin tener que tener un SortedSet o modelo comparable?
- 14. Android: ¿agregar archivos al paquete APK?
- 15. XML sin tener que reemplazar las entidades HTML en PHP
- 16. T-SQL Insertar en la tabla sin tener que especificar cada columna
- 17. ¿Cómo puedo utilizar un atributo src zipfileset sin tener que especificar manualmente para todos mis frascos?
- 18. Agregar 10 minutos de trabajo cron al paquete de Ubuntu
- 19. JQuery Mobile ¿Agregar las opciones de la pantalla de inicio?
- 20. agregar automáticamente las constantes para cada una de las opciones en un modelo de Django
- 21. ¿Cómo agregar archivos al paquete Debian con CPack?
- 22. Al ejecutar NUnit y especificar una categoría, ¿se pueden incluir todas las pruebas sin categoría?
- 23. Agregar barra de desplazamiento en las opciones del menú desplegable
- 24. "Lista de productos disponibles Clasificar por" no eliminará las opciones del menú desplegable
- 25. Tener opciones en argparse con un guión
- 26. ¿Utiliza ModalPopupExtender sin tener que establecer TargetControlID?
- 27. opciones booleanas de las opciones del programa boost
- 28. Rails: Agregar opciones a collection_select
- 29. Agregar objetos al espacio de nombres del paquete
- 30. Cómo agregar .el paquete al control de fuente Xcode 4?
¿Has tenido algo de suerte con esto? Realmente necesito poder hacer esto y, por lo que puedo ver, este es un error de Magento. –