回答:
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をご覧ください。
編集:
アントンからの要求に応じて、新しい製品タイプにもう少し機能を追加します(今週にもう少し時間があれば、追加の修正を試みます)。
今のところ、コスト属性の価格入力フィールドでデモ製品タイプを更新しました。
このコスト属性は、フロントエンドに表示されるときに価格を計算するために使用されます(価格属性は使用できず、使用されません)。この例では、cost * 1.25を使用しました(Genmato \ DemoProduct \ Model \ Product \ Type \ Demo \ Priceで):
フロントエンドの結果:
更新された完全なコードは、https://github.com/Genmato/DemoProductで入手できます。