Aby dodać nowy typ produktu w Magento 2, musisz utworzyć plik etc / product_types.xml w swoim module. W tym pliku określasz:
<?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>
Następnie utwórz 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)
{
}
}
Spowoduje to dodanie nowego typu produktu i teraz możesz go wybrać podczas tworzenia nowego produktu w backend.
W pliku product_type.xml można również określić własny indeksator lub metodę obliczania ceny. Aby uzyskać więcej przykładów, zobacz kod dla typów produktów Pakiet, Produkt konfiguracyjny, Produkt do pobrania i Produkt zgrupowany.
Aby zobaczyć pełne rozszerzenie produktu demonstracyjnego, zobacz: https://github.com/Genmato/DemoProduct
EDYTOWAĆ:
Zgodnie z prośbą Anton trochę dodatkowej funkcjonalności dla nowego typu produktu (jeśli w tym tygodniu będę miał trochę więcej czasu, postaram się wprowadzić dodatkowe modyfikacje).
Na razie zaktualizowałem typ produktu demonstracyjnego o pole wprowadzania ceny dla atrybutu kosztu:
Ten atrybut kosztu służy do obliczania ceny, gdy jest wyświetlany w interfejsie użytkownika (atrybut ceny jest niedostępny i nie jest używany). W tym przykładzie użyłem kosztu * 1,25 (w Genmato \ DemoProduct \ Model \ Product \ Type \ Demo \ Price):
Wynik w interfejsie:
Pełny zaktualizowany kod jest dostępny na stronie : https://github.com/Genmato/DemoProduct