Answers:
要在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>
然后创建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)
{
}
}
这将添加新产品类型,现在您可以在后端中创建新产品时选择此类型。
在product_type.xml中,还可以指定您自己的索引器或价格计算方法,有关更多示例,请参见产品类型Bundle,ConfigureProduct,Downloadable和GroupedProduct的代码。
有关完整的演示产品扩展,请参阅:https : //github.com/Genmato/DemoProduct
编辑:
根据Anton的要求,新产品类型需要一些额外的功能(如果我本周有更多时间,我将尝试进行一些额外的修改)。
现在,我使用成本属性的价格输入字段更新了演示产品类型:
此成本属性用于在前端显示价格时计算价格(price属性不可用,不使用)。在此示例中,我使用了cost * 1.25(在Genmato \ DemoProduct \ Model \ Product \ Type \ Demo \ Price中):
前端的结果:
完整的更新代码可在以下网址获得:https://github.com/Genmato/DemoProduct