Para adicionar um novo tipo de produto no Magento 2, você precisa criar um etc / product_types.xml no seu módulo. Neste arquivo você especifica:
<?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>
Em seguida, crie o 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)
{
}
}
Isso adicionará o novo tipo de produto e agora você pode selecioná-lo ao criar um novo produto no back-end.
No product_type.xml, também é possível especificar seu próprio indexador ou método de cálculo de preço. Para obter mais exemplos, consulte o código dos tipos de produto Bundle, ConfigureProduct, Downloadable e GroupedProduct.
Para a extensão completa do produto demo, consulte: https://github.com/Genmato/DemoProduct
EDITAR:
Conforme solicitado por Anton, uma funcionalidade extra para o novo tipo de produto (se eu tiver um pouco mais de tempo nesta semana, tentarei fazer algumas modificações extras).
Por enquanto, atualizei o tipo de produto de demonstração com um campo de entrada de preço para o atributo de custo:
Esse atributo de custo é usado para calcular o preço quando é exibido no front-end (o atributo price não está disponível e não é usado). Neste exemplo, usei o custo * 1,25 (em Genmato \ DemoProduct \ Model \ Product \ Type \ Demo \ Price):
O resultado no frontend:
O código atualizado completo está disponível em: https://github.com/Genmato/DemoProduct