2010-10-28 10 views
5

Entiendo cómo crear un producto mediante programación y también agregarlo al carrito. Sé que esto puede sonar tonto, pero es posible generar un producto sobre la marcha y agregarlo al carro/presupuesto, pero nunca realmente guardarlo en la base de datos.Magento: Agregue un producto "falso" al carrito/presupuesto

Queremos crear una interfaz hecha a la medida y pensé que al final podría agregar un producto de paquete con todas las selecciones, pero ese paquete no existiría en el back-end.

Supongo que siempre que pueda asegurarse de que la cotización y el pedido tengan lo que necesita en términos del producto, estaría bien, pero obviamente hay mucho que está relacionado con buscar cosas en la base de datos en un sku o ID específicos. Sé que si elimina un producto y luego mira un pedido en el administrador que causa problemas, al menos lo hizo para este escenario con el que estaba lidiando.

Estaba pensando en crear un producto de paquete gigante que tuviera como 6 elementos de paquete diferentes y cada elemento podría tener potencialmente como 500 productos y luego, en función de lo que el usuario seleccione, agregue programáticamente el paquete al carrito. Pero luego no estaba seguro de si habría un efecto negativo en tener un paquete gigantesco como ese también.

ACTUALIZACIÓN: No creo que esto va a funcionar, obviamente, hay una gran cantidad de información vinculada al producto en la base de datos y configuración de una prueba y de inmediato obtenemos un error de $ Item-> obtenerProducto(). Estamos avanzando en la creación de un producto de paquete gigante y también el producto genérico con la adición de opciones personalizadas sobre la marcha, que Anda señaló a continuación. Cualquier otra sugerencia será muy apreciada.

Respuesta

3

No estoy seguro de que el enfoque de clockworkgeek funcione. En cada carga de página, Magento carga los artículos del carrito para asegurarse de que siguen siendo válidos (en existencia, precios correctos, etc.) y modifica el carrito para reflejar esos valores. Mi comprensión del sistema en el pasado ha sido que un producto en el carro necesita tener un valor de base de datos correspondiente para sobrevivir a este proceso.

El enfoque del "producto de paquete gigante" es un problema, pero en el pasado ha sido el mejor enfoque que he encontrado. Intentar cambiar los valores del producto (como el precio o los atributos) será anulado por las comprobaciones del carrito, por lo que necesita un producto con la máxima flexibilidad, como un producto del paquete demasiado personalizado o un producto configurable.

Espero que ayude!

Gracias, Joe

+0

Puede cambiar el precio del producto que se agrega al carrito sobre la marcha usando setCustomPrice() (Mage_Sales_Model_Quote_Item_Abstract :: setCustomPrice()). –

+0

Gracias Joseph, me imaginaba que todos esos cheques en existencia y en los precios se están haciendo, pero nunca lo he cavado mucho todavía, creo que iremos con la opción de paquete de producto –

2

Puede crear programáticamente Mage_Sales_Model_Quote_Item sy agregarlos al carrito. Ha notado que necesita un producto que coincida con su identificación de producto, pero no tiene por qué ser útil. Podría ser un producto en blanco, desactivado, también creado en código. Todo lo que se necesita es un talón.
Las cosas necesarias para el carrito se almacenan en el elemento de cotización - campos como nombre, valor y cantidad. Esos campos se copian directamente a la orden sin usar un producto.

+0

Voy a probar ese reloj. –

2

Por qué no crear un producto genérico en dB y a continuación, la personalización de productos como opciones personalizadas (additional_options) sobre la marcha en función de la selección del usuario. Puede agregar opciones personalizadas al producto (en realidad, al elemento de cita) sin tener que guardarlas en la base de datos. Lo hice una vez para un sitio web que vende gafas con receta. La prescripción fue agregada como una opción.

+0

Gracias Anda, creo que revisé tu sitio web de gafas de su cartera antes. Voy a tomar su enfoque y ver qué sucede en comparación con el producto del paquete uno también. También podría intentarlo todo, para saber qué es posible en el futuro. –

0
Mage::getModel('catalog/product') 

crea un nuevo producto.puedes añadir a un carro, haciendo algo como esto:

$cart = Mage::getSingleton('checkout/cart'); 
$product = Mage::getModel('catalog/product') 
       ->setStoreId($storeid) 
       ->setTypeId($type_id) 
       ->setQty($quantyty) 
       ->setWhatAttributYouWant($attribute); 
$cart->addProduct($product); 

los atributos del producto se puede encontrar en la base de datos en las tablas que se inician como catalog_product _... o toman un producto ya creado, y ver qué lo atribuye tiene en la matriz _data (con depurador o simplemente print_r ($ product-> getData))

Cuestiones relacionadas