Pour ajouter un nouveau type de produit dans Magento 2, vous devez créer un fichier etc / product_types.xml dans votre module. Dans ce fichier, vous spécifiez:
<?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>
Puis créez le 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)
{
}
}
Cela ajoutera le nouveau type de produit et vous pouvez maintenant le sélectionner lors de la création d'un nouveau produit dans le backend.
Dans product_type.xml, il est également possible de spécifier votre propre indexeur ou méthode de calcul du prix. Pour plus d'exemples, reportez-vous au code des types de produits Bundle, ConfigureProduct, Downloadable et GroupedProduct.
Pour une extension complète du produit de démonstration, voir: https://github.com/Genmato/DemoProduct
MODIFIER:
Comme demandé par Anton, un peu plus de fonctionnalités pour le nouveau type de produit (si j’ai un peu plus de temps cette semaine, je vais essayer d’apporter quelques modifications supplémentaires).
Pour l'instant, j'ai mis à jour le type de produit de démonstration avec un champ de saisie de prix pour l'attribut de coût:
Cet attribut de coût est utilisé pour calculer le prix lorsqu'il est affiché dans l'interface frontale (l'attribut price n'est pas disponible et n'est pas utilisé). Pour cet exemple, j'ai utilisé cost * 1.25 (dans Genmato \ DemoProduct \ Model \ Product \ Type \ Demo \ Price):
Le résultat sur le frontend:
Le code complet et mis à jour est disponible sur: https://github.com/Genmato/DemoProduct