如何在Magento 2中添加新产品类型?(MageStackDay之谜1)


40

MageStackDay奖励500pts赏金的奖金问题,并有可能赢得一年的免费Z-Ray许可证。可以在此处找到更多信息<<

这些问题由Magento 2核心开发人员Anton Kril提供。

题:

我想向Magento添加新的产品类型。我将如何在Magento 2开发人员Beta中进行操作

Answers:


40

要在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


只需在您的答案中添加教程,希望您能得到赏金!以下是有关创建新产品类型的完整教程:vimeo.com/116810487 在此处查看文档:devdocs.magento.com
JoeyH 2015年

4
如果您添加至少一些自定义点(渲染,价格计算等),那就太好了
Anton Kril 2015年

1
@Anton:我根据成本属性通过简单的价格计算更新了演示产品类型。如果接下来几天有更多时间,我将尝试添加一些其他修改。
Vladimir Kerkhoff 2015年

如何扩展它以创建复合产品类型,例如分组产品?
Sukeshini
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.