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.
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:
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):
Il risultato sul frontend:
Il codice aggiornato completo è disponibile su: https://github.com/Genmato/DemoProduct