Come aggiungere un nuovo tipo di prodotto in Magento 2? (MageStackDay mystery question 1)


40

Domanda bonus MageStackDay per 500 punti Bounty E la possibilità di vincere una licenza Z-Ray gratuita per un anno. Maggiori informazioni possono essere trovate >> qui <<

Le domande sono fornite dallo sviluppatore principale Magento 2 Anton Kril.

Domanda:

Voglio aggiungere un nuovo tipo di prodotto a Magento. Come potrei fare per fare questo in Magento 2 dev beta

Risposte:


40

Per aggiungere un nuovo tipo di prodotto in Magento 2 devi creare un etc / product_types.xml nel tuo modulo. In questo file si specifica:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../Catalog/etc/product_types.xsd">
    <type name="demoproduct" label="Demo Product" modelInstance="Genmato\DemoProduct\Model\Product\Type\Demo" indexPriority="25" sortOrder="25">
        <customAttributes>
            <attribute name="refundable" value="true"/>
        </customAttributes>
    </type>
</config>

Quindi creare il modelInstance:

/**
 * @category    Genmato
 * @package     Genmato_MageStackProduct
 * @copyright   Copyright (c) 2015 Genmato BV (https://genmato.com)
 */

namespace Genmato\DemoProduct\Model\Product\Type;

class Demo extends \Magento\Catalog\Model\Product\Type\AbstractType
{
    /**
     * Delete data specific for Simple product type
     *
     * @param \Magento\Catalog\Model\Product $product
     * @return void
     */
    public function deleteTypeSpecificData(\Magento\Catalog\Model\Product $product)
    {
    }
}

Questo aggiungerà il nuovo tipo di prodotto e ora puoi selezionarlo quando crei un nuovo prodotto nel back-end.

Demo Opzione prodotto

In product_type.xml è anche possibile specificare il proprio indicizzatore o il metodo di calcolo del prezzo, per ulteriori esempi consultare il codice per i tipi di prodotto Bundle, ConfigureProduct, Downloadable e GroupedProduct.

Per l'estensione completa del prodotto demo, consultare: https://github.com/Genmato/DemoProduct

MODIFICARE:

Come richiesto da Anton un po 'di funzionalità extra per il nuovo tipo di prodotto (se avrò un po' più di tempo questa settimana, proverò ad apportare alcune modifiche extra).

Per ora ho aggiornato il tipo di prodotto demo con un campo di input prezzo per l'attributo costo: Attributo del prezzo di costo

Questo attributo di costo viene utilizzato per calcolare il prezzo quando viene visualizzato nel frontend (l'attributo prezzo non è disponibile e non viene utilizzato). Per questo esempio ho usato il costo * 1,25 (in Genmato \ DemoProduct \ Model \ Product \ Type \ Demo \ Price): Calcolo del prezzo

Il risultato sul frontend: Risultato del frontend

Il codice aggiornato completo è disponibile su: https://github.com/Genmato/DemoProduct


Basta aggiungere un tutorial alla tua risposta, spero che tu ottenga la generosità! È disponibile un tutorial completo sulla creazione di nuovi tipi di prodotti: vimeo.com/116810487 Visualizza la documentazione qui: devdocs.magento.com
JoeyH,

4
Sarebbe bello se aggiungessi almeno alcuni punti di personalizzazione (rendering, calcolo dei prezzi, ecc.)
Anton Kril,

1
@Anton: ho aggiornato il tipo di prodotto demo con un semplice calcolo del prezzo basato sull'attributo cost. Se avrò un po 'più di tempo nei prossimi giorni, proverò ad aggiungere alcune altre modifiche.
Vladimir Kerkhoff,

Come estenderlo per creare un tipo di prodotto composito come un prodotto raggruppato?
Sukeshini,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.