Для добавления нового типа продукта в Magento 2 вам необходимо создать файл etc / product_types.xml в вашем модуле. В этом файле вы указываете:
<?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>
Затем создайте экземпляр модели:
/**
* @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)
{
}
}
Это добавит новый тип продукта, и теперь вы можете выбрать его при создании нового продукта в бэкэнде.
В product_type.xml также можно указать свой собственный индексатор или метод расчета цены, дополнительные примеры см. В коде для типов продуктов Bundle, ConfigureProduct, Downloadable и GroupedProduct.
Для полного расширения демонстрационного продукта см .: https://github.com/Genmato/DemoProduct
РЕДАКТИРОВАТЬ:
По просьбе Антона немного дополнительной функциональности для нового типа продукта (если у меня будет немного больше времени на этой неделе, я постараюсь внести некоторые дополнительные изменения).
На данный момент я обновил тип демонстрационного продукта полем ввода цены для атрибута стоимости:
Этот атрибут стоимости используется для расчета цены, когда он отображается во внешнем интерфейсе (атрибут цены недоступен и не используется). Для этого примера я использовал стоимость * 1,25 (в Genmato \ DemoProduct \ Model \ Product \ Type \ Demo \ Price):
Результат на интерфейсе:
Полный обновленный код доступен по адресу : https://github.com/Genmato/DemoProduct.