cancel
Showing results for 
Search instead for 
Did you mean: 

crear extencion magento 2

crear extencion magento 2

Buenos días, estoy intentando crear un addon donde el cliente si quiere que un producto reciba un complemento adicional, se le agregue el 3.5% del precio total a ese mismo producto, pero en magento no se como podria hacer eso, tenia pensado que ese valor agregado este en el producto dentro del carrito, pero no se muy bien como funciona el carrito.

espero alguna sugerencia o algo para ayudarme a resolver el problema que tengo.

Gracias de antemano

12 REPLIES 12

Re: crear extencion magento 2

Hola @Korinho,

 

¿Quizás el enfoque más básico sea usar custom options?

Re: crear extencion magento 2

haaaaa me parece perfecto, solo que quisiera que todos los productos tuvieran eso por default, como podria hacerlo??? con una extencion para que siempre aparesca?? o hay alguna obcion para que se agregue a todos los productos???

Re: crear extencion magento 2

Hola  @Korinho,


Las Custom options están siempre disponible. ¿Cuando dices que estén siempre te refieres a la misma opción en todos los productos?.

¿La misma opción con los mismos valores?

Re: crear extencion magento 2

si exactamente eso, todos los productos que se den de alta tendran esa Custom options que yo les ponga, estuve pensando que si se los agrega cada vez que se da de alta un producto, pero como puedo detectar que se agrego un producto??? y como puedo obtener el id de ese producto agregado recientemente?

Re: crear extencion magento 2

Hola @Korinho,

 

No lo he probado en Magento2 aún (para este evento específico) pero creo que mi prime prueba sería usar un observer que escuche un after_save del producto. Allí, vía código, agregar la custom option.

De esta forma, cada vez que se grabe se validaría y se agregaría en caso de no existir.

Re: crear extencion magento 2

me parece perfecto, solo que en el codigo del observer de tu pagina 

https://www.damianculotta.com.ar/magento/usando-observers-en-magento2/

 

donde dice:

 $product = $observer->getProduct(); 
$originalName = $product->getName();
$modifiedName = $originalName . ' - MODIFICADO POR EL OBSERVER';

 en mi caso seria:

$product = $observer->getProduct(); 
$originalName = $product->getIdproduct(); 

????

Re: crear extencion magento 2

Hola @Korinho,


El ejemplo de ese post es bastante básico (y para el frontend).

En tu caso debería ser para el adminhtml, cuando se graba el producto (si mal no recuerdo el thread).

El pincpio es el mismo. Deberías tener el código para crear una custom option y asociarla a un producto.

Luego, con el observer, ejecutarías ese código (el de creación de la custom option). De esta forma, al crear el producto se crearía automáticamente.

Claramente deberías agregar algunos controles para evitar que se vuelva a crear si ya existe.

 

Probaria primero con crear una custom option programáticamente. Luego volvería al observer.

Re: crear extencion magento 2

el codigo de magento no lo conozco bien asi que tengo pensado agregar directamente a la base de datos los registros que necesita para crear la opcion, ya tengo identificadas todas las tablas, lo que no entiendo es como hace magento para detectar que se esta agregando un producto para ejecutar mi evento?

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="catalog_controller_product_view">
        <observer name="BarbanetProductData" instance="Barbanet\SampleModule\Observer\Product\Data" />
    </event>
    <event name="barbanet_samplemodule_controller_event_after">
        <observer name="BarbanetControllerSample" instance="Barbanet\SampleModule\Observer\Controller\Sample" />
    </event>
</config>

ahí pues yo puedo ponerle el nombre a mi evento  pero como le dice a magento que va a observar cuando se agregue un producto??? estoy intentando acoplarlo a mi código por eso pregunto.

 

gracias

Re: crear extencion magento 2

hola, ya resolvi la mayoria de los problemas, solo me queda que quiero el id del producto recien agregado, pero no me lo arroja, lo tengo asi

$product = $observer->getEvent()->getProduct();
	    $Id = $product->getId();

ya e probado con varias y no me devuelve el id del producto recién agregado.

 

hice una prueba con otro observer que al agregar un producto del carrito me de el id y si me lo da, pero en _save_after no me lo arroja.