Para agregar un nuevo tipo de producto en Magento 2, debe crear un etc / product_types.xml en su módulo. En este archivo usted 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>
Luego cree el 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)
{
}
}
Esto agregará el nuevo tipo de producto y ahora puede seleccionarlo al crear un nuevo producto en el back-end.
En product_type.xml también es posible especificar su propio indexador o método de cálculo de precios; para obtener más ejemplos, consulte el código de los tipos de productos Bundle, ConfigureProduct, Downloadable y GroupedProduct.
Para ver la extensión completa del producto de demostración, consulte: https://github.com/Genmato/DemoProduct
EDITAR:
Según lo solicitado por Anton, un poco más de funcionalidad para el nuevo tipo de producto (si tengo un poco más de tiempo esta semana, intentaré algunas modificaciones adicionales).
Por ahora actualicé el tipo de Producto de demostración con un campo de entrada de precio para el atributo de costo:
Este atributo de costo se usa para calcular el precio cuando se muestra en la interfaz (el atributo de precio no está disponible y no se usa). Para este ejemplo, utilicé el costo * 1.25 (en Genmato \ DemoProduct \ Model \ Product \ Type \ Demo \ Price):
El resultado en la interfaz:
El código actualizado completo está disponible en: https://github.com/Genmato/DemoProduct